diff options
author | Martin Thomson <mt@lowentropy.net> | 2021-07-08 17:56:31 +0000 |
---|---|---|
committer | Martin Thomson <mt@lowentropy.net> | 2021-07-08 17:56:31 +0000 |
commit | 48e37e705f94bb7ce75d43e092c224af5af41058 (patch) | |
tree | 518fa776205dd2071efb9b839a5607c9d16fa563 | |
parent | 878b99a09abf1dce614ebd1135ef7cfbf09834ba (diff) | |
download | nss-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.cc | 18 | ||||
-rw-r--r-- | gtests/ssl_gtest/tls_connect.h | 2 | ||||
-rw-r--r-- | gtests/ssl_gtest/tls_ech_unittest.cc | 6 |
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); |