From: Guido Vranken Date: Mon, 22 Apr 2019 12:11:12 +0000 (+0200) Subject: Enforce a strict output length check in CRYPTO_ccm128_tag X-Git-Tag: openssl-3.0.0-alpha1~2131 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=514c9da48b860153079748b0d588cd42191f0b6a;p=oweals%2Fopenssl.git Enforce a strict output length check in CRYPTO_ccm128_tag Return error if the output tag buffer size doesn't match the tag size exactly. This prevents the caller from using that portion of the tag buffer that remains uninitialized after an otherwise succesfull call to CRYPTO_ccm128_tag. Bug found by OSS-Fuzz. Fix suggested by Kurt Roeckx. Signed-off-by: Guido Vranken Reviewed-by: Matthias St. Pierre Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8810) --- diff --git a/crypto/modes/ccm128.c b/crypto/modes/ccm128.c index 9edf0270e2..bfa2d4604c 100644 --- a/crypto/modes/ccm128.c +++ b/crypto/modes/ccm128.c @@ -425,7 +425,7 @@ size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len) M *= 2; M += 2; - if (len < M) + if (len != M) return 0; memcpy(tag, ctx->cmac.c, M); return M;