| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent fff8eb2 commit 9759049
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -48,14 +48,23 @@ Metadata metadata; | |||
| 48 | 48 | ||
| 49 | 49 | #if HAVE_OPENSSL | |
| 50 | 50 | static constexpr size_t search(const char* s, char c, size_t n = 0) { | |
| 51 | - return *s == c ? n : search(s + 1, c, n + 1); | ||
| 51 | + return *s == '\0' ? n : (*s == c ? n : search(s + 1, c, n + 1)); | ||
| 52 | 52 | } | |
| 53 | 53 | ||
| 54 | 54 | static inline std::string GetOpenSSLVersion() { | |
| 55 | 55 | // sample openssl version string format | |
| 56 | 56 | // for reference: "OpenSSL 1.1.0i 14 Aug 2018" | |
| 57 | 57 | const char* version = OpenSSL_version(OPENSSL_VERSION); | |
| 58 | - const size_t start = search(version, ' ') + 1; | ||
| 58 | + const size_t first_space = search(version, ' '); | ||
| 59 | + | ||
| 60 | + // When Node.js is linked to an alternative library implementing the | ||
| 61 | + // OpenSSL API e.g. BoringSSL, the version string may not match the | ||
| 62 | + // expected pattern. In this case just return “0.0.0” as placeholder. | ||
| 63 | + if (version[first_space] == '\0') { | ||
| 64 | + return "0.0.0"; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + const size_t start = first_space + 1; | ||
| 59 | 68 | const size_t len = search(&version[start], ' '); | |
| 60 | 69 | return std::string(version, start, len); | |
| 61 | 70 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments