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 12:50:27 +0000 (13:50 +0100)
commit20744f6b40b5ded059a848f66d6ba922f2a62eb3
tree4007f5f9810f4e9b66bd7de6556214728fc590e4
parentbc4d7e1230bfb10cc3154b3d11ac2ff95f48bc94
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