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;
52
52
53
53
#if HAVE_OPENSSL
54
54
static 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 ) );
56
56
}
57
57
58
58
static inline std::string GetOpenSSLVersion () {
59
59
// sample openssl version string format
60
60
// for reference: "OpenSSL 1.1.0i 14 Aug 2018"
61
61
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 ;
63
72
const size_t len = search (&version[start], ' ' );
64
73
return std::string (version, start, len);
65
74
}
You can’t perform that action at this time.
0 commit comments