Public bug reported:

"BN_cmp() returns -1 if a < b, 0 if a == b and 1 if a > b." (
https://wiki.openssl.org/index.php/Manual:BN_cmp(3) )

The libcrypto.a shipped with Ubuntu makes a distinction between a
negative 0 ("-0") and a positive zero ("0"). This means that BN_cmp(-0,
0) returns -1 and BN_cmp(0, -0) returns 1. The latest versions of
OpenSSL (1.0.2m and 1.1.0g) both return 0 for both comparisons, which is
what you would expect.

lsb_release -rd:

Description:    Ubuntu 16.04.3 LTS
Release:        16.04

Tested on both the 32 bit and 64 bit versions of this Ubuntu release.

Attached is a proof of concept.

The anomaly may also be caused by BN_dec2bn rather than BN_cmp.

The bug is unlikely to have direct security consequences, but may cause
unexpected behaviour in other applications that depend on this
widespread library.

Found with https://github.com/guidovranken/bignum-fuzzer

** Affects: openssl (Ubuntu)
     Importance: Undecided
         Status: New

** Attachment added: "proof of concept of the bug"
   https://bugs.launchpad.net/bugs/1734447/+attachment/5014408/+files/osslcmp.c

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1734447

Title:
  BN_cmp regards negative and positive zero as different numbers

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1734447/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to