From 2cfd0934eff8eaee1661f4dfc875bed98dab3a76 Mon Sep 17 00:00:00 2001 From: Rahim Kanji Date: Mon, 6 Feb 2023 19:13:37 +0500 Subject: [PATCH] Fixed crash if IPv6 IP is used and OS is not properly configured to route it. --- deps/Makefile | 1 + .../mariadb_lib.c.ipv6_fix.patch | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 deps/mariadb-client-library/mariadb_lib.c.ipv6_fix.patch diff --git a/deps/Makefile b/deps/Makefile index 55a45ba99..0010fb24f 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -223,6 +223,7 @@ endif cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_stmt.c < ../mariadb_stmt.c.patch cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_lib.c < ../mariadb_lib.c.patch cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_lib.c < ../mariadb_lib.c.collation.patch # make sure this path is applied after mariadb_lib.c.patch + cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_lib.c < ../mariadb_lib.c.ipv6_fix.patch # make sure this patch is applied after mariadb_lib.c.collation.patch # cd mariadb-client-library/mariadb_client && patch libmariadb/net.c < ../net.c.patch cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_async.c < ../mariadb_async.c.patch cd mariadb-client-library/mariadb_client && patch libmariadb/ma_password.c < ../ma_password.c.patch diff --git a/deps/mariadb-client-library/mariadb_lib.c.ipv6_fix.patch b/deps/mariadb-client-library/mariadb_lib.c.ipv6_fix.patch new file mode 100644 index 000000000..be1f0723d --- /dev/null +++ b/deps/mariadb-client-library/mariadb_lib.c.ipv6_fix.patch @@ -0,0 +1,24 @@ +@@ -1615,6 +1615,11 @@ + if (ma_pvio_connect(pvio, &cinfo) != 0) + { + ma_pvio_close(pvio); ++ if (mysql->options.extension && mysql->options.extension->async_context && ++ mysql->options.extension->async_context->pvio) { ++ /* async_context->pvio contains dangling pointer. Setting async_context->pvio as NULL*/ ++ mysql->options.extension->async_context->pvio = NULL; ++ } + goto error; + } + +@@ -1625,6 +1630,11 @@ + if (ma_pvio_write(pvio, (unsigned char *)hdr, len) <= 0) + { + ma_pvio_close(pvio); ++ if (mysql->options.extension->async_context && ++ mysql->options.extension->async_context->pvio) { ++ /* async_context->pvio contains dangling pointer. Setting async_context->pvio as NULL*/ ++ mysql->options.extension->async_context->pvio = NULL; ++ } + goto error; + } + }