From: Nikita Popov Date: Wed, 19 Jun 2019 12:22:05 +0000 (+0200) Subject: Fix incorrect shift in mysqlnd_wireprotocol X-Git-Tag: php-7.4.0alpha2~51^2~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=22765160da028590aafc073cc2edbb088e28f436;p=php 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. --- diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 6ef48a4a7d..609fd98309 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) {