php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #72638 client fails to set "CLIENT_CONNECT_ATTRS" in capability flag
Submitted: 2016-07-21 02:43 UTC Modified: -
Votes:3
Avg. Score:3.3 ± 0.5
Reproduced:3 of 3 (100.0%)
Same Version:2 (66.7%)
Same OS:2 (66.7%)
From: littlewintergrass at gmail dot com Assigned:
Status: Open Package: MySQL related
PHP Version: Irrelevant OS: any
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: littlewintergrass at gmail dot com
New email:
PHP Version: OS:

 

 [2016-07-21 02:43 UTC] littlewintergrass at gmail dot com
Description:
------------
Client will send handshake response to MySQL server after receiving server greeting packet.

mysqlnd extension adds client attribute "_client_name" as "mysqlnd" in the handshake response packet:
https://github.com/php/php-src/blob/master/ext/mysqlnd/mysqlnd_connection.c#L834

According to MySQL protocol, client should set "CLIENT_CONNECT_ATTRS" bit in its capability flag if any client attribute is added:
http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::HandshakeResponse41
http://dev.mysql.com/doc/internals/en/capability-flags.html#flag-CLIENT_CONNECT_ATTRS

However it is never set in handshake response.
The macro is defined here:
https://github.com/php/php-src/blob/master/ext/mysqlnd/mysqlnd_enum_n_def.h#L102

For those MySQL servers that strictly follow the protocol, this will cause packet parsing failure.



Patches

fix-connection-attributes-in-mysqlnd (last revision 2016-11-16 15:22 UTC by mateusz dot kijowski at gmail dot com)

Pull Requests

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Dec 09 21:01:27 2024 UTC