From f06c34f66ca0c8afa97980f34f462809cb531470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 27 Sep 2017 10:28:01 +0300 Subject: [PATCH] MXS-1456: Fix crash on empty script value If a script variable resolves to an empty string, the replacement attempt will fail with an out-of-memory error. The following realloc call will fail as it requires a positive value for the new size. --- server/core/externcmd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/core/externcmd.c b/server/core/externcmd.c index 874a41570..664c2d9a0 100644 --- a/server/core/externcmd.c +++ b/server/core/externcmd.c @@ -220,10 +220,12 @@ bool externcmd_substitute_arg(EXTERNCMD* cmd, const char* match, const char* rep size_t size_orig = strlen(cmd->argv[i]); size_t size_replace = strlen(replace); size_t size = MXS_MAX(size_orig, size_replace); - char* dest = MXS_MALLOC(size); - if (dest) + char* dest; + + if (size && (dest = MXS_MALLOC(size))) { mxs_pcre2_result_t rc = mxs_pcre2_substitute(re, cmd->argv[i], replace, &dest, &size); + switch (rc) { case MXS_PCRE2_ERROR: