Fix DTLS unprocessed records bug
authorMatt Caswell <matt@openssl.org>
Tue, 5 Jul 2016 10:46:26 +0000 (11:46 +0100)
committerMatt Caswell <matt@openssl.org>
Fri, 19 Aug 2016 13:04:44 +0000 (14:04 +0100)
commitfa75569758298e2930c78989b516cac937118acc
tree860225334af8683fd17a8bfbcffece03e89b654e
parent6c858db32b1ae293d7649ea593de3359225a4f7e
Fix DTLS unprocessed records bug

During a DTLS handshake we may get records destined for the next epoch
arrive before we have processed the CCS. In that case we can't decrypt or
verify the record yet, so we buffer it for later use. When we do receive
the CCS we work through the queue of unprocessed records and process them.

Unfortunately the act of processing wipes out any existing packet data
that we were still working through. This includes any records from the new
epoch that were in the same packet as the CCS. We should only process the
buffered records if we've not got any data left.

Reviewed-by: Richard Levitte <levitte@openssl.org>
ssl/d1_pkt.c