CVSROOT:        /cvs
Module name:    src
Changes by:     t...@cvs.openbsd.org    2021/03/27 11:56:28

Modified files:
        lib/libssl     : ssl_both.c ssl_cert.c ssl_clnt.c ssl_lib.c 
                         ssl_locl.h ssl_srvr.c 

Log message:
Garbage collect s->internal->type

This variable is used in the legacy stack to decide whether we are
a server or a client. That's what s->server is for...

The new TLSv1.3 stack failed to set s->internal->type, which resulted
in hilarious mishandling of previous_{client,server}_finished. Indeed,
both client and server would first store the client's verify_data in
previous_server_finished and later overwrite it with the server's
verify_data. Consequently, renegotiation has been completely broken
for more than a year. In fact, server side renegotiation was broken
during the 6.5 release cycle. Clearly, no-one uses this.

This commit fixes client side renegotiation and restores the previous
behavior of SSL_get_client_CA_list(). Server side renegotiation will
be fixed in a later commit.

ok jsing

Reply via email to