Commit eb633d03 authored by David Woodhouse's avatar David Woodhouse Committed by Matt Caswell
Browse files

Kill PACKET_starts() from bad_dtls_test



As discussed in PR#1409 it can be done differently.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
Reviewed-by: default avatarMatt Caswell <matt@openssl.org>
parent c14e790d
Loading
Loading
Loading
Loading
+6 −22
Original line number Diff line number Diff line
@@ -111,25 +111,10 @@ static SSL_SESSION *client_session(void)
    return d2i_SSL_SESSION(NULL, &p, sizeof(session_asn1));
}

/* PACKET_equal() doesn't quite do what we need. Provide a version that
 * does, in a form that can easily be moved to ssl_locl.h if anyone else
 * cares to come up with a better name and use it too... */
__owur static ossl_inline int PACKET_starts(PACKET *pkt, const void *ptr,
                                            size_t num)
{
    if (PACKET_remaining(pkt) < num)
        return 0;
    if (CRYPTO_memcmp(pkt->curr, ptr, num) != 0)
        return 0;

    packet_forward(pkt, num);
    return 1;
}

/* Returns 1 for initial ClientHello, 2 for ClientHello with cookie */
static int validate_client_hello(BIO *wbio)
{
    PACKET pkt;
    PACKET pkt, pkt2;
    long len;
    unsigned char *data;
    int cookie_found = 0;
@@ -165,16 +150,15 @@ static int validate_client_hello(BIO *wbio)
        return 0;

    /* Check session id length and content */
    if (!PACKET_get_1(&pkt, &u))
        return 0;
    if (u != sizeof(session_id) || !PACKET_starts(&pkt, session_id, u))
    if (!PACKET_get_length_prefixed_1(&pkt, &pkt2) ||
        !PACKET_equal(&pkt2, session_id, sizeof(session_id)))
        return 0;

    /* Check cookie */
    if (!PACKET_get_1(&pkt, &u))
    if (!PACKET_get_length_prefixed_1(&pkt, &pkt2))
        return 0;
    if (u) {
        if (u != sizeof(cookie) || !PACKET_starts(&pkt, cookie, u))
    if (PACKET_remaining(&pkt2)) {
        if (!PACKET_equal(&pkt2, cookie, sizeof(cookie)))
            return 0;
        cookie_found = 1;
    }