Skip to content

Commit

Permalink
Don't process an incomplete message
Browse files Browse the repository at this point in the history
  • Loading branch information
tmshort committed Aug 30, 2019
1 parent 81f0ce2 commit f97e6a9
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions ssl/statem/statem_quic.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,32 +18,31 @@ NON_EMPTY_TRANSLATION_UNIT
int quic_get_message(SSL *s, int *mt, size_t *len)
{
size_t l;
QUIC_DATA *qd;
QUIC_DATA *qd = s->quic_input_data_head;
uint8_t *p;

if (s->quic_input_data_head == NULL) {
if (qd == NULL || (qd->length - qd->offset) != 0) {
s->rwstate = SSL_READING;
*len = 0;
return 0;
}

/* This is where we check for the proper level, not when data is given */
if (s->quic_input_data_head->level != s->quic_read_level) {
if (qd->level != s->quic_read_level) {
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_GET_MESSAGE,
SSL_R_WRONG_ENCRYPTION_LEVEL_RECEIVED);
*len = 0;
return 0;
}

if (!BUF_MEM_grow_clean(s->init_buf, (int)s->quic_input_data_head->length)) {
if (!BUF_MEM_grow_clean(s->init_buf, (int)qd->length)) {
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_GET_MESSAGE,
ERR_R_BUF_LIB);
*len = 0;
return 0;
}

/* Copy buffered data */
qd = s->quic_input_data_head;
memcpy(s->init_buf->data, (void*)(qd + 1), qd->length);
s->init_buf->length = qd->length;
s->quic_input_data_head = qd->next;
Expand Down

0 comments on commit f97e6a9

Please sign in to comment.