OpenSSL is written by monkeys (2009)
I've done quite a bit of programming with the OpenSSL library and this article is only scratching the surface of the awfulness.  Documentation is horrible to non-existent, you really do need to go spelunking into the source to figure out how things work, and the code really is that horrible.<p>The worst thing is that error reporting is not consistent - sometimes -1 means error, other times 0 means error, other times 0 means success, and sometimes it's a combination.  This is really, <i>really</i> bad for a crypto library since properly detecting errors is usually critical to security.