The branch master has been updated via a85c9021252e4ab53a15b46e773808864a63d3d1 (commit) from 3fc164e8d18dcdef57d297956debf8d966e7fbef (commit)
- Log ----------------------------------------------------------------- commit a85c9021252e4ab53a15b46e773808864a63d3d1 Author: Pauli <paul.d...@oracle.com> Date: Thu Jul 16 11:15:42 2020 +1000 mac: always pass a non-NULL output size pointer to providers. The backend code varies for the different MACs and sometimes sets the output length, sometimes checks the return pointer and sometimes neither. Reviewed-by: Richard Levitte <levi...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/12458) ----------------------------------------------------------------------- Summary of changes: crypto/evp/mac_lib.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/crypto/evp/mac_lib.c b/crypto/evp/mac_lib.c index b7bfe8921f..a5c1b44666 100644 --- a/crypto/evp/mac_lib.c +++ b/crypto/evp/mac_lib.c @@ -120,15 +120,14 @@ int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen) int EVP_MAC_final(EVP_MAC_CTX *ctx, unsigned char *out, size_t *outl, size_t outsize) { - int l = EVP_MAC_size(ctx); + size_t l = EVP_MAC_size(ctx); + int res = 1; - if (l < 0) - return 0; + if (out != NULL) + res = ctx->meth->final(ctx->data, out, &l, outsize); if (outl != NULL) *outl = l; - if (out == NULL) - return 1; - return ctx->meth->final(ctx->data, out, outl, outsize); + return res; } /*