Ensure application data records are not kept when fully processed

This commit fixes the following case: If a client is both expecting a
SERVER_HELLO and has an application data record that's partially
processed in flight (that's the situation the client gets into after
receiving a ServerHelloRequest followed by ApplicationData), a
subsequent call to ssl_read will set keep_current_message = 1
when seeing the unexpected application data, but not reset it to 0
after the application data has been processed. This commit fixes this.
This commit is contained in:
Hanno Becker 2017-06-09 10:52:45 +01:00
parent 1bf86b7e32
commit 0401a3d888

View file

@ -4832,8 +4832,11 @@ int ssl_read( ssl_context *ssl, unsigned char *buf, size_t len )
ssl->in_msglen -= n; ssl->in_msglen -= n;
if( ssl->in_msglen == 0 ) if( ssl->in_msglen == 0 )
{
/* all bytes consumed */ /* all bytes consumed */
ssl->in_offt = NULL; ssl->in_offt = NULL;
ssl->keep_current_message = 0;
}
else else
/* more data available */ /* more data available */
ssl->in_offt += n; ssl->in_offt += n;