Avoid double free when processing DTLS packets.
authorAdam Langley <agl@imperialviolet.org>
Fri, 6 Jun 2014 21:19:21 +0000 (14:19 -0700)
committerMatt Caswell <matt@openssl.org>
Wed, 6 Aug 2014 19:27:51 +0000 (20:27 +0100)
commit2172d4f63c61922487008f42511cc6bdae9b47a0
tree1cc866aaf9a0a81d7b582f63d2141b4f2257e3e9
parentc34091d47e205e08e2eb8c6c936f167fba726751
Avoid double free when processing DTLS packets.

The |item| variable, in both of these cases, may contain a pointer to a
|pitem| structure within |s->d1->buffered_messages|. It was being freed
in the error case while still being in |buffered_messages|. When the
error later caused the |SSL*| to be destroyed, the item would be double
freed.

Thanks to Wah-Teh Chang for spotting that the fix in 1632ef74 was
inconsistent with the other error paths (but correct).

Fixes CVE-2014-3505

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
ssl/d1_both.c