A few fixes/improvements:
authormiod <miod@openbsd.org>
Sat, 12 Jul 2014 16:42:47 +0000 (16:42 +0000)
committermiod <miod@openbsd.org>
Sat, 12 Jul 2014 16:42:47 +0000 (16:42 +0000)
commitc686d77397dc62ec48c15d670b0d34b8eb5a0877
treeed7b338e22625434390597115d533ba06963f8e3
parenta2f047195bc6cd031919568bbf254d4f563cc54e
A few fixes/improvements:
- first, BN_free == BN_clear_free in our libcrypto, so we do not need to
  treat CBIGNUM (crypto BN) separately from BIGNUM (regular BN).
- then, in bn_i2c(), since BN_bn2bin returns BN_num_bytes(input), take
  advantage of this to avoid calling BN_num_bytes() a second time.
  BN_num_bytes() is cheap, but this not a reason to perform redundant
  work.
- finally, in bn_c2i, if bn_new() fails, return early. Otherwise
  BN_bin2bn will try to create a BN too, and although this will probably
  fail since we were already out of memory, if we are on a threaded
  process and suddenly the allocation succeeds, we will leak it since it
  will never be stored in *pval.

ok jsing@
lib/libcrypto/asn1/x_bignum.c
lib/libssl/src/crypto/asn1/x_bignum.c