From d37082eeab5a511c93c4408b1b2cb7a688e94e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Thu, 1 Sep 2022 14:59:43 +0200 Subject: [PATCH] src: improve error handling in CloneSSLCerts If sk_X509_new() returns NULL or if sk_X509_push() fails, return instead of silently ignoring the error. PR-URL: https://github.com/nodejs/node/pull/44410 Reviewed-By: Ben Noordhuis Reviewed-By: James M Snell Reviewed-By: Filip Skokan --- src/crypto/crypto_common.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/crypto/crypto_common.cc b/src/crypto/crypto_common.cc index e19fe81ed265c6..0c794ffe2c1a27 100644 --- a/src/crypto/crypto_common.cc +++ b/src/crypto/crypto_common.cc @@ -339,8 +339,9 @@ MaybeLocal GetCipherVersion(Environment* env, const SSL_CIPHER* cipher) { StackOfX509 CloneSSLCerts(X509Pointer&& cert, const STACK_OF(X509)* const ssl_certs) { StackOfX509 peer_certs(sk_X509_new(nullptr)); - if (cert) - sk_X509_push(peer_certs.get(), cert.release()); + if (!peer_certs) return StackOfX509(); + if (cert && !sk_X509_push(peer_certs.get(), cert.release())) + return StackOfX509(); for (int i = 0; i < sk_X509_num(ssl_certs); i++) { X509Pointer cert(X509_dup(sk_X509_value(ssl_certs, i))); if (!cert || !sk_X509_push(peer_certs.get(), cert.get()))