summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Thomson <mt@lowentropy.net>2021-07-08 17:56:31 +0000
committerMartin Thomson <mt@lowentropy.net>2021-07-08 17:56:31 +0000
commit48e37e705f94bb7ce75d43e092c224af5af41058 (patch)
tree518fa776205dd2071efb9b839a5607c9d16fa563
parent878b99a09abf1dce614ebd1135ef7cfbf09834ba (diff)
downloadnss-hg-48e37e705f94bb7ce75d43e092c224af5af41058.tar.gz
Bug 1713562 - Fix test leak, r=bbeurdouche
Differential Revision: https://phabricator.services.mozilla.com/D119045
-rw-r--r--gtests/ssl_gtest/tls_connect.cc18
-rw-r--r--gtests/ssl_gtest/tls_connect.h2
-rw-r--r--gtests/ssl_gtest/tls_ech_unittest.cc6
3 files changed, 12 insertions, 14 deletions
diff --git a/gtests/ssl_gtest/tls_connect.cc b/gtests/ssl_gtest/tls_connect.cc
index b5438f793..4dd0a0034 100644
--- a/gtests/ssl_gtest/tls_connect.cc
+++ b/gtests/ssl_gtest/tls_connect.cc
@@ -248,17 +248,19 @@ void TlsConnectTestBase::ResetAntiReplay(PRTime window) {
anti_replay_.reset(p_anti_replay);
}
-void TlsConnectTestBase::MakeEcKeyParams(SECItem* params, SSLNamedGroup group) {
+ScopedSECItem TlsConnectTestBase::MakeEcKeyParams(SSLNamedGroup group) {
auto groupDef = ssl_LookupNamedGroup(group);
- ASSERT_NE(nullptr, groupDef);
+ EXPECT_NE(nullptr, groupDef);
auto oidData = SECOID_FindOIDByTag(groupDef->oidTag);
- ASSERT_NE(nullptr, oidData);
- ASSERT_NE(nullptr,
- SECITEM_AllocItem(nullptr, params, (2 + oidData->oid.len)));
+ EXPECT_NE(nullptr, oidData);
+ ScopedSECItem params(
+ SECITEM_AllocItem(nullptr, nullptr, (2 + oidData->oid.len)));
+ EXPECT_TRUE(!!params);
params->data[0] = SEC_ASN1_OBJECT_ID;
params->data[1] = oidData->oid.len;
memcpy(params->data + 2, oidData->oid.data, oidData->oid.len);
+ return params;
}
void TlsConnectTestBase::GenerateEchConfig(
@@ -266,20 +268,18 @@ void TlsConnectTestBase::GenerateEchConfig(
const std::string& public_name, uint16_t max_name_len, DataBuffer& record,
ScopedSECKEYPublicKey& pubKey, ScopedSECKEYPrivateKey& privKey) {
bool gen_keys = !pubKey && !privKey;
- SECKEYECParams ecParams = {siBuffer, NULL, 0};
- MakeEcKeyParams(&ecParams, ssl_grp_ec_curve25519);
SECKEYPublicKey* pub = nullptr;
SECKEYPrivateKey* priv = nullptr;
if (gen_keys) {
- priv = SECKEY_CreateECPrivateKey(&ecParams, &pub, nullptr);
+ ScopedSECItem ecParams = MakeEcKeyParams(ssl_grp_ec_curve25519);
+ priv = SECKEY_CreateECPrivateKey(ecParams.get(), &pub, nullptr);
} else {
priv = privKey.get();
pub = pubKey.get();
}
ASSERT_NE(nullptr, priv);
- SECITEM_FreeItem(&ecParams, PR_FALSE);
PRUint8 encoded[1024];
unsigned int encoded_len = 0;
SECStatus rv = SSL_EncodeEchConfigId(
diff --git a/gtests/ssl_gtest/tls_connect.h b/gtests/ssl_gtest/tls_connect.h
index a44846bcf..b011ca7ae 100644
--- a/gtests/ssl_gtest/tls_connect.h
+++ b/gtests/ssl_gtest/tls_connect.h
@@ -146,7 +146,7 @@ class TlsConnectTestBase : public ::testing::Test {
void SaveAlgorithmPolicy();
void RestoreAlgorithmPolicy();
- static void MakeEcKeyParams(SECItem* params, SSLNamedGroup group);
+ static ScopedSECItem MakeEcKeyParams(SSLNamedGroup group);
static void GenerateEchConfig(
HpkeKemId kem_id, const std::vector<HpkeSymmetricSuite>& cipher_suites,
const std::string& public_name, uint16_t max_name_len, DataBuffer& record,
diff --git a/gtests/ssl_gtest/tls_ech_unittest.cc b/gtests/ssl_gtest/tls_ech_unittest.cc
index dbfb06dec..68916c625 100644
--- a/gtests/ssl_gtest/tls_ech_unittest.cc
+++ b/gtests/ssl_gtest/tls_ech_unittest.cc
@@ -182,14 +182,12 @@ class TlsConnectStreamTls13Ech : public TlsConnectTestBase {
static const std::vector<HpkeSymmetricSuite> kSuites = {
{HpkeKdfHkdfSha256, HpkeAeadAes128Gcm}};
- SECKEYECParams ecParams = {siBuffer, NULL, 0};
- MakeEcKeyParams(&ecParams, ssl_grp_ec_curve25519);
-
+ ScopedSECItem ecParams = MakeEcKeyParams(ssl_grp_ec_curve25519);
ScopedSECKEYPublicKey pub;
ScopedSECKEYPrivateKey priv;
SECKEYPublicKey* pub_p = nullptr;
SECKEYPrivateKey* priv_p =
- SECKEY_CreateECPrivateKey(&ecParams, &pub_p, nullptr);
+ SECKEY_CreateECPrivateKey(ecParams.get(), &pub_p, nullptr);
pub.reset(pub_p);
priv.reset(priv_p);
ASSERT_TRUE(!!pub);