hmac: fix coverity 1484888 negative integer to size_t conversion
authorPauli <pauli@openssl.org>
Sun, 16 May 2021 23:45:33 +0000 (09:45 +1000)
committerPauli <pauli@openssl.org>
Tue, 18 May 2021 03:24:41 +0000 (13:24 +1000)
More theoretical than real but easy and cheap to check for.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15300)

crypto/hmac/hmac.c

index 6d142f2cbb51df4037996a8cb551ebe8492f9261..f800cb8f89bcd09d0ee5e8190f6a8d7b1919cd6d 100644 (file)
@@ -221,10 +221,13 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
                     unsigned char *md, unsigned int *md_len)
 {
     static unsigned char static_md[EVP_MAX_MD_SIZE];
+    int size = EVP_MD_size(evp_md);
 
+    if (size < 0)
+        return NULL;
     return EVP_Q_mac(NULL, "HMAC", NULL, EVP_MD_name(evp_md), NULL,
                      key, key_len, data, data_len,
-                     md == NULL ? static_md : md, EVP_MD_size(evp_md), md_len);
+                     md == NULL ? static_md : md, size, md_len);
 }
 
 void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)