mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-05-06 06:29:42 +00:00
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:
parent
c14e790d6c
commit
eb633d03fe
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user