mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 12:41:00 +02:00
BUG/MINOR: ssl: ssl_sock_parse_clienthello ignores session id
In ssl_sock_parse_clienthello(), the code considers that SSL Sessionid size is '1', and then considers that the SSL cipher suite is availble right after the session id size information. This actually works in a single case, when the client does not send a session id. This patch fixes this issue by introducing the a propoer way to parse the session id and move forward the cursor by the session id length when required. Need to be backported to 1.8.
This commit is contained in:
parent
1ced485b29
commit
6be139f867
@ -1561,10 +1561,19 @@ void ssl_sock_parse_clienthello(int write_p, int version, int content_type,
|
||||
|
||||
/* Expect 2 bytes for protocol version (1 byte for major and 1 byte
|
||||
* for minor, the random, composed by 4 bytes for the unix time and
|
||||
* 28 bytes for unix payload, and them 1 byte for the session id. So
|
||||
* we jump 1 + 1 + 4 + 28 + 1 bytes.
|
||||
* 28 bytes for unix payload. So we jump 1 + 1 + 4 + 28.
|
||||
*/
|
||||
msg += 1 + 1 + 4 + 28 + 1;
|
||||
msg += 1 + 1 + 4 + 28;
|
||||
if (msg > end)
|
||||
return;
|
||||
|
||||
/* Next, is session id:
|
||||
* if present, we have to jump by length + 1 for the size information
|
||||
* if not present, we have to jump by 1 only
|
||||
*/
|
||||
if (msg[0] > 0)
|
||||
msg += msg[0];
|
||||
msg += 1;
|
||||
if (msg > end)
|
||||
return;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user