From: Patrick Steuer Date: Mon, 5 Aug 2019 14:56:14 +0000 (+0200) Subject: Test for out-of-bounds write when requesting zero bytes from shake X-Git-Tag: OpenSSL_1_1_1d~53 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=efc62e661714a4bba3040a12da4e4a0df8855283;p=oweals%2Fopenssl.git Test for out-of-bounds write when requesting zero bytes from shake Signed-off-by: Patrick Steuer Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/9433) (cherry picked from commit 3ce46435e6ebed69bec0fa3454cc195ced426d42) --- diff --git a/test/evp_test.c b/test/evp_test.c index 7a3e41c885..25bae20380 100644 --- a/test/evp_test.c +++ b/test/evp_test.c @@ -403,6 +403,28 @@ static int digest_test_run(EVP_TEST *t) } if (EVP_MD_flags(expected->digest) & EVP_MD_FLAG_XOF) { + EVP_MD_CTX *mctx_cpy; + char dont[] = "touch"; + + if (!TEST_ptr(mctx_cpy = EVP_MD_CTX_new())) { + goto err; + } + if (!EVP_MD_CTX_copy(mctx_cpy, mctx)) { + EVP_MD_CTX_free(mctx_cpy); + goto err; + } + if (!EVP_DigestFinalXOF(mctx_cpy, (unsigned char *)dont, 0)) { + EVP_MD_CTX_free(mctx_cpy); + t->err = "DIGESTFINALXOF_ERROR"; + goto err; + } + if (!TEST_str_eq(dont, "touch")) { + EVP_MD_CTX_free(mctx_cpy); + t->err = "DIGESTFINALXOF_ERROR"; + goto err; + } + EVP_MD_CTX_free(mctx_cpy); + got_len = expected->output_len; if (!EVP_DigestFinalXOF(mctx, got, got_len)) { t->err = "DIGESTFINALXOF_ERROR";