on today's episode of things you didn't want to learn:
authortedu <tedu@openbsd.org>
Thu, 24 Apr 2014 04:31:30 +0000 (04:31 +0000)
committertedu <tedu@openbsd.org>
Thu, 24 Apr 2014 04:31:30 +0000 (04:31 +0000)
commit07594ff0b2c66402ac844e0ecdd49438ad371a00
treec8806aa1b2c50bf2620d240a55643441e2c911c8
parentc35a735c4b79b65ec98a098e46281edea4ec0529
on today's episode of things you didn't want to learn:
do_ssl3_write() is recursive. and not in the simple, obvious way, but in
the sneaky called through ssl3_dispatch_alert way. (alert level: fuchsia)
this then has a decent chance of releasing the buffer that we thought we
were going to use. check for this happening, and if the buffer has gone
missing, put another one back in place.
the direct recursive call is safe because it won't call ssl3_write_pending
which is the function that actually does do the writing and releasing.
as reported by David Ramos to openssl-dev:
http://marc.info/?l=openssl-dev&m=139809493725682&w=2
ok beck
lib/libssl/s3_pkt.c
lib/libssl/src/ssl/s3_pkt.c