From 1df42a2ca0d9788829939ad7fbfe20601d008830 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Tue, 28 May 2019 20:03:44 +0200 Subject: [PATCH] MDEV-19617 Assertion `src' failed in MyCTX::update Apprently, sometimes there will be null pointers with 0 length passed to the MyCTX::update() function, and will need to return a valid buffer. So weaken the assertion, and use a valid pointer for src if it was NULL. --- mysys_ssl/my_crypt.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mysys_ssl/my_crypt.cc b/mysys_ssl/my_crypt.cc index 383cec07ddd..e41ace49474 100644 --- a/mysys_ssl/my_crypt.cc +++ b/mysys_ssl/my_crypt.cc @@ -60,7 +60,16 @@ public: } virtual int update(const uchar *src, uint slen, uchar *dst, uint *dlen) { - DBUG_ASSERT(src); +#ifdef HAVE_WOLFSSL + // WolfSSL checks parameters and does not like NULL pointers to be passed to function below. + if (!src) + { + static const uchar dummy[MY_AES_BLOCK_SIZE]; + DBUG_ASSERT(!slen); + src=dummy; + } +#endif + if (EVP_CipherUpdate(ctx, dst, (int*)dlen, src, slen) != 1) return MY_AES_OPENSSL_ERROR; return MY_AES_OK;