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
Support for the -ssl2 option has been removed, so remove it from usage
as well ("openssl ciphers -h").

"sure" miod@
remove redundant asign. from David Hill
A fantastic way to make a large unsigned number is to assign
a small signed one to it.. Some people on OpenSSL's list
noticed - http://marc.info/?l=openssl-dev&m=139809485525663&w=2

This should fix that, and make sure we don't try to write out insane
amounts of stuff.
ok miod@ tedu@
Rip a bunch of ifdefs from speed. We know we can fork, have SIGALRM and
do not use lint.

ok miod@
Remove more FIPS tenticles.

ok beck@
KNF
When OPENSSL_C is not defined, apps_startup becomes a
signal(SIGPIPE, SIG_IGN) and apps_shutdown is a no-op. So just do that
instead.

ok beck@
unifdef -U LINT
More KNF, things that couldn't be verified with md5(1), and some whitespace
I missed on the first go around.
More KNF.
You want signals?!? I'll give you signals!!! Oh, and we have termios as
well...

ok beck@
add ERR_asprintf_error_data, A tool to be used to get rid of the far too
frequent construct of 30 lines of pointer and strlcat insanity followed
by an ERR_add_error_data. I will sweep through here like a chubby mongol
horde in the next few days pillaging crappy ERR_add_error_data's.
Oh and while we're at it fix the nasty vdata function to use something less
hard on the eyes.
ok jsing@
Remove some malloc/strlcpy/strlcat horror. Just use asprintf and avoid an
unchecked malloc at the same time.

ok beck@
Make it compile again.
More KNF.
obvious use after free was less obviously not a use after free.
who uses '\0' as a null pointer constant? fix my mistake and restore
original semantics.
unifdef MSDOS
ok miod@
rearrange a bit of code/comments
Bring back the SSL_OP_PKCS1_CHECK_* defines (defined to zero, as they already
were), after stumbling upon code (mis)using them in the wild.