Commit af674d4e authored by Matt Caswell's avatar Matt Caswell
Browse files

Fix d2i_SSL_SESSION for DTLS1_BAD_VER



Some Cisco appliances use a pre-standard version number for DTLS. We support
this as DTLS1_BAD_VER within the code.

This change fixes d2i_SSL_SESSION for that DTLS version.

Based on an original patch by David Woodhouse <dwmw2@infradead.org>

RT#3704

Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
parent eadf70d2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ extern "C" {
# define DTLS1_VERSION                   0xFEFF
# define DTLS1_2_VERSION                 0xFEFD
# define DTLS_MAX_VERSION                DTLS1_2_VERSION
# define DTLS1_VERSION_MAJOR             0xFE

# define DTLS1_BAD_VER                   0x0100

+3 −1
Original line number Diff line number Diff line
@@ -410,7 +410,9 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
    os.data = NULL;
    os.length = 0;
    M_ASN1_D2I_get_x(ASN1_OCTET_STRING, osp, d2i_ASN1_OCTET_STRING);
    if ((ssl_version >> 8) >= SSL3_VERSION_MAJOR) {
    if ((ssl_version >> 8) == SSL3_VERSION_MAJOR
        || (ssl_version >> 8) == DTLS1_VERSION_MAJOR
        || ssl_version == DTLS1_BAD_VER) {
        if (os.length != 2) {
            c.error = SSL_R_CIPHER_CODE_WRONG_LENGTH;
            c.line = __LINE__;