Clarify logic in BIO_*printf functions
authorMatt Caswell <matt@openssl.org>
Mon, 27 Apr 2015 14:41:03 +0000 (15:41 +0100)
committerMatt Caswell <matt@openssl.org>
Thu, 30 Apr 2015 22:12:39 +0000 (23:12 +0100)
commit9d9e37744cd5119f9921315864d1cd28717173cd
tree6c14fa8f09884b04e99291db117eabe4a2e8958d
parentb86d7dca69f5c80abd60896c8ed3039fc56210cc
Clarify logic in BIO_*printf functions

The static function dynamically allocates an output buffer if the output
grows larger than the static buffer that is normally used. The original
logic implied that |currlen| could be greater than |maxlen| which is
incorrect (and if so would cause a buffer overrun). Also the original
logic would call OPENSSL_malloc to create a dynamic buffer equal to the
size of the static buffer, and then immediately call OPENSSL_realloc to
make it bigger, rather than just creating a buffer than was big enough in
the first place. Thanks to Kevin Wojtysiak (Int3 Solutions) and Paramjot
Oberoi (Int3 Solutions) for reporting this issue.

Reviewed-by: Andy Polyakov <appro@openssl.org>
crypto/bio/b_print.c