From 39dbb990a06753c0ab74d56098218d41780a9053 Mon Sep 17 00:00:00 2001
From: Richard Levitte <levitte@openssl.org>
Date: Fri, 11 Mar 2016 11:38:14 +0100
Subject: [PATCH] Avoid getting unresolved referense to bn_expand2 in
 test/bntest.c

Issue identified on Solaris by Erik Forsberg <erik@efca.com>

Reviewed-by: Rich Salz <rsalz@openssl.org>
---
 test/bntest.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/test/bntest.c b/test/bntest.c
index 082cf4cba0..53769aad60 100644
--- a/test/bntest.c
+++ b/test/bntest.c
@@ -80,6 +80,19 @@
 #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 */
-- 
2.25.1