Avoid getting unresolved referense to bn_expand2 in test/bntest.c
authorRichard Levitte <levitte@openssl.org>
Fri, 11 Mar 2016 10:38:14 +0000 (11:38 +0100)
committerRichard Levitte <levitte@openssl.org>
Fri, 11 Mar 2016 13:48:26 +0000 (14:48 +0100)
Issue identified on Solaris by Erik Forsberg <erik@efca.com>

Reviewed-by: Rich Salz <rsalz@openssl.org>
test/bntest.c

index 082cf4cba0292ae8f163d623b90356dac6f80570..53769aad60fdc56c35782cb1fe80c233c4840462 100644 (file)
 #include <openssl/x509.h>
 #include <openssl/err.h>
 
+/*
+ * In bn_lcl.h, bn_expand() is defined as a static ossl_inline function.
+ * This is fine in itself, it will end up as an unused static function in
+ * the worst case.  However, it referenses bn_expand2(), which is a private
+ * function in libcrypto and therefore unavailable on some systems.  This
+ * may result in a linker error because of unresolved symbols.
+ *
+ * To avoid this, we define a dummy variant of bn_expand2() here, and to
+ * avoid possible clashes with libcrypto, we rename it first, using a macro.
+ */
+#define bn_expand2 dummy_bn_expand2
+static BIGNUM *bn_expand2(BIGNUM *b, int words) { return NULL; }
+
 #include "../crypto/bn/bn_lcl.h"
 
 static const int num0 = 100;           /* number of tests */