From f9f4a68368406a2ba2bd9fab0494261090183e8e Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Fri, 2 Aug 2019 16:42:49 +0200 Subject: [PATCH] Fix #78179: MariaDB server version incorrectly detected As of MariaDB 10.0.2, the server reports a fake version number as work- around for replication issues[1]. We apply the same "fix" as in the MariaDB client to cater to this. [1] --- NEWS | 3 +++ ext/mysqlnd/mysqlnd_connection.c | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/NEWS b/NEWS index f8508d2a307..31b67125f6c 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,9 @@ PHP NEWS - LiteSpeed: . Updated to LiteSpeed SAPI V7.5 (Fixed clean shutdown). (George Wang) +- MySQLnd: + . Fixed bug #78179 (MariaDB server version incorrectly detected). (cmb) + - Standard: . Fixed bug #69100 (Bus error from stream_copy_to_stream (file -> SSL stream) with invalid length). (Nikita) diff --git a/ext/mysqlnd/mysqlnd_connection.c b/ext/mysqlnd/mysqlnd_connection.c index dc42a16b6da..42de003ef97 100644 --- a/ext/mysqlnd/mysqlnd_connection.c +++ b/ext/mysqlnd/mysqlnd_connection.c @@ -1485,6 +1485,14 @@ MYSQLND_METHOD(mysqlnd_conn_data, get_server_version)(const MYSQLND_CONN_DATA * return 0; } +#define MARIA_DB_VERSION_HACK_PREFIX "5.5.5-" + + if (conn->server_capabilities & CLIENT_PLUGIN_AUTH + && !strncmp(p, MARIA_DB_VERSION_HACK_PREFIX, sizeof(MARIA_DB_VERSION_HACK_PREFIX)-1)) + { + p += sizeof(MARIA_DB_VERSION_HACK_PREFIX)-1; + } + major = ZEND_STRTOL(p, &p, 10); p += 1; /* consume the dot */ minor = ZEND_STRTOL(p, &p, 10);