Kill PACKET_starts() from bad_dtls_test

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

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
This commit is contained in:
David Woodhouse 2016-08-06 11:25:46 +01:00 committed by Matt Caswell
parent c14e790d6c
commit eb633d03fe

View File

@ -111,25 +111,10 @@ static SSL_SESSION *client_session(void)
return d2i_SSL_SESSION(NULL, &p, sizeof(session_asn1)); 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 */ /* Returns 1 for initial ClientHello, 2 for ClientHello with cookie */
static int validate_client_hello(BIO *wbio) static int validate_client_hello(BIO *wbio)
{ {
PACKET pkt; PACKET pkt, pkt2;
long len; long len;
unsigned char *data; unsigned char *data;
int cookie_found = 0; int cookie_found = 0;
@ -165,16 +150,15 @@ static int validate_client_hello(BIO *wbio)
return 0; return 0;
/* Check session id length and content */ /* Check session id length and content */
if (!PACKET_get_1(&pkt, &u)) if (!PACKET_get_length_prefixed_1(&pkt, &pkt2) ||
return 0; !PACKET_equal(&pkt2, session_id, sizeof(session_id)))
if (u != sizeof(session_id) || !PACKET_starts(&pkt, session_id, u))
return 0; return 0;
/* Check cookie */ /* Check cookie */
if (!PACKET_get_1(&pkt, &u)) if (!PACKET_get_length_prefixed_1(&pkt, &pkt2))
return 0; return 0;
if (u) { if (PACKET_remaining(&pkt2)) {
if (u != sizeof(cookie) || !PACKET_starts(&pkt, cookie, u)) if (!PACKET_equal(&pkt2, cookie, sizeof(cookie)))
return 0; return 0;
cookie_found = 1; cookie_found = 1;
} }