File tree Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -52,14 +52,23 @@ Metadata metadata;
5252
5353#if HAVE_OPENSSL
5454static constexpr size_t search (const char * s, char c, size_t n = 0 ) {
55- return *s == c ? n : search (s + 1 , c, n + 1 );
55+ return *s == ' \0 ' ? n : (*s == c ? n : search (s + 1 , c, n + 1 ) );
5656}
5757
5858static inline std::string GetOpenSSLVersion () {
5959 // sample openssl version string format
6060 // for reference: "OpenSSL 1.1.0i 14 Aug 2018"
6161 const char * version = OpenSSL_version (OPENSSL_VERSION);
62- const size_t start = search (version, ' ' ) + 1 ;
62+ const size_t first_space = search (version, ' ' );
63+
64+ // When Node.js is linked to an alternative library implementing the
65+ // OpenSSL API e.g. BoringSSL, the version string may not match the
66+ // expected pattern. In this case just return “0.0.0” as placeholder.
67+ if (version[first_space] == ' \0 ' ) {
68+ return " 0.0.0" ;
69+ }
70+
71+ const size_t start = first_space + 1 ;
6372 const size_t len = search (&version[start], ' ' );
6473 return std::string (version, start, len);
6574}
You can’t perform that action at this time.
0 commit comments