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));
|
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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user