When detecting OpenSSL, look for 1.0.1, and in homebrew location

Previously we would detect the system openssl on OSX, and then fail
to use it, since we required Open 1.0.1 or later.  That's silly!

Instead of looking for RAND_add(), look for TLSv1_1_method(): it was
introduced in 1.0.1, and is also present in LibreSSL.

Also, add the hombebrew path to our search path here.

Fixes bug 23602; bugfix on 0.2.7.2-alpha.
This commit is contained in:
Nick Mathewson 2017-09-20 15:54:36 -04:00
parent 2c93be80d9
commit 564ff506ea
2 changed files with 11 additions and 4 deletions

6
changes/ticket23602 Normal file
View File

@ -0,0 +1,6 @@
o Minor bugfixes (build):
- When searching for OpenSSL, don't accept any OpenSSL library that lacks
TLSv1_1_method(): Tor doesn't build with those versions. Additionally,
look in /usr/local/opt/openssl, if it's present. These changes
together repair the default build on OSX systems with Homebrew
installed. Fixes bug 23602; bugfix on 0.2.7.2-alpha.

View File

@ -612,11 +612,12 @@ AC_ARG_WITH(ssl-dir,
fi fi
]) ])
AC_MSG_NOTICE([Now, we'll look for OpenSSL >= 1.0.1])
TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI], TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI],
[#include <openssl/rand.h>], [#include <openssl/ssl.h>],
[void RAND_add(const void *buf, int num, double entropy);], [struct ssl_method_st; const struct ssl_method_st *TLSv1_1_method(void);],
[RAND_add((void*)0,0,0);], [], [TLSv1_1_method();], [],
[/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl]) [/usr/local/opt/openssl /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl])
dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay() dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay()