Skip to content

Commit

Permalink
src: account for OpenSSL unexpected version
Browse files Browse the repository at this point in the history
PR-URL: #54038
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
codebytere authored and targos committed Sep 21, 2024
1 parent 7000539 commit 05ebbec
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/node_metadata.cc
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,23 @@ Metadata metadata;

#if HAVE_OPENSSL
static constexpr size_t search(const char* s, char c, size_t n = 0) {
return *s == c ? n : search(s + 1, c, n + 1);
return *s == '\0' ? n : (*s == c ? n : search(s + 1, c, n + 1));
}

static inline std::string GetOpenSSLVersion() {
// sample openssl version string format
// for reference: "OpenSSL 1.1.0i 14 Aug 2018"
const char* version = OpenSSL_version(OPENSSL_VERSION);
const size_t start = search(version, ' ') + 1;
const size_t first_space = search(version, ' ');

// When Node.js is linked to an alternative library implementing the
// OpenSSL API e.g. BoringSSL, the version string may not match the
// expected pattern. In this case just return “0.0.0” as placeholder.
if (version[first_space] == '\0') {
return "0.0.0";
}

const size_t start = first_space + 1;
const size_t len = search(&version[start], ' ');
return std::string(version, start, len);
}
Expand Down

0 comments on commit 05ebbec

Please sign in to comment.