diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2015-09-13 15:59:30 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2015-09-13 15:59:30 +0000 |
commit | 4f77ae4cfe322baf1cc29cca13cf217f9a3aa50f (patch) | |
tree | 8d167b098fca6046ee1630935a1422a4108050fc /lib/libssl | |
parent | 9fe2636e7efff33633e5a60d2bc9d0087253e1fa (diff) |
BN does support negative-zero -- BN_print() sets the standard here.
BN_bn2hex() had a 1-byte overflow when creating "-0\0". Reported to
me a while back by unknown person -- did not have enough experience
to push this through then.
advice from jsing, ok miod
Diffstat (limited to 'lib/libssl')
-rw-r--r-- | lib/libssl/src/crypto/bn/bn_print.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/libssl/src/crypto/bn/bn_print.c b/lib/libssl/src/crypto/bn/bn_print.c index 4920705a5b7..6b9f82caafc 100644 --- a/lib/libssl/src/crypto/bn/bn_print.c +++ b/lib/libssl/src/crypto/bn/bn_print.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bn_print.c,v 1.23 2014/07/12 16:03:36 miod Exp $ */ +/* $OpenBSD: bn_print.c,v 1.24 2015/09/13 15:59:29 deraadt Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -77,13 +77,13 @@ BN_bn2hex(const BIGNUM *a) char *buf; char *p; - buf = malloc(a->top * BN_BYTES * 2 + 2); + buf = malloc(BN_is_negative(a) + a->top * BN_BYTES * 2 + 2); if (buf == NULL) { BNerr(BN_F_BN_BN2HEX, ERR_R_MALLOC_FAILURE); goto err; } p = buf; - if (a->neg) + if (BN_is_negative(a)) *(p++) = '-'; if (BN_is_zero(a)) *(p++) = '0'; |