From 22765160da028590aafc073cc2edbb088e28f436 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 19 Jun 2019 14:22:05 +0200 Subject: [PATCH] Fix incorrect shift in mysqlnd_wireprotocol This one looks like a genuine bug: We're shifting a uint16_t by 16 bits. On x86 that likely results in no shift happening. --- ext/mysqlnd/mysqlnd_wireprotocol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 6ef48a4a7d1..609fd983093 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -420,7 +420,7 @@ php_mysqlnd_greet_read(MYSQLND_CONN_DATA * conn, void * _packet) p--; /* Additional 16 bits for server capabilities */ - packet->server_capabilities |= uint2korr(pad_start) << 16; + packet->server_capabilities |= (uint32_t) uint2korr(pad_start) << 16; /* And a length of the server scramble in one byte */ packet->authentication_plugin_data.l = uint1korr(pad_start + 2); if (packet->authentication_plugin_data.l > SCRAMBLE_LENGTH) {