• M
    Fix SSL_get0_raw_cipherlist() · 07afdf3c
    Matt Caswell 提交于
    SSL_get0_raw_cipherlist() was a little too "raw" in the case of an SSLv2
    compat ClientHello. In 1.0.2 and below, during version negotiation, if
    we received an SSLv2 compat ClientHello but actually wanted to do SSLv3+
    then we would construct a "fake" SSLv3+ ClientHello. This "fake" ClientHello
    would have its ciphersuite list converted to the SSLv3+ format. It was
    this "fake" raw list that got saved away to later be returned by a call to
    SSL_get0_raw_cipherlist().
    
    In 1.1.0+ version negotiation works differently and we process an SSLv2
    compat ClientHello directly without the need for an intermediary "fake"
    ClientHello. This meant that the raw ciphersuite list being saved was in
    the SSLv2 format. Any caller of this function would not expect that and
    potentially overread the returned buffer by one byte.
    
    Fixes #2189
    Reviewed-by: NRichard Levitte <levitte@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/2280)
    07afdf3c
statem_srvr.c 115.5 KB