diff --git a/CHANGES b/CHANGES index 0922acb089f9ae40f409eacfbe26b7e0f1c3bacb..38e81e8a2fd073aadba41ae91c873480582508c9 100644 --- a/CHANGES +++ b/CHANGES @@ -352,6 +352,15 @@ TODO: bug: pad x with leading zeros if necessary Changes between 0.9.6h and 0.9.7 [XX xxx 2002] + *) Fix session ID handling in SSLv2 client code: the SERVER FINISHED + code (06) was taken as the first octet of the session ID and the last + octet was ignored consequently. As a result SSLv2 client side session + caching could not have worked due to the session ID mismatch between + client and server. + Behaviour observed by Crispin Flowerday as + PR #377. + [Lutz Jaenicke] + *) Change the declaration of needed Kerberos libraries to use EX_LIBS instead of the special (and badly supported) LIBKRB5. LIBKRB5 is removed entirely. diff --git a/ssl/s2_clnt.c b/ssl/s2_clnt.c index 0bc04d284e83060164cc2a429ca23d686761c20b..c6319bb63da68cb4fa282f93eca2c5db274508b6 100644 --- a/ssl/s2_clnt.c +++ b/ssl/s2_clnt.c @@ -1014,7 +1014,7 @@ static int get_server_finished(SSL *s) * or bad things can happen */ /* ZZZZZZZZZZZZZ */ s->session->session_id_length=SSL2_SSL_SESSION_ID_LENGTH; - memcpy(s->session->session_id,p,SSL2_SSL_SESSION_ID_LENGTH); + memcpy(s->session->session_id,p+1,SSL2_SSL_SESSION_ID_LENGTH); } else {