diff --git a/crypto/evp/evp_test.cc b/crypto/evp/evp_test.cc index 7fedc152..83906546 100644 --- a/crypto/evp/evp_test.cc +++ b/crypto/evp/evp_test.cc @@ -63,6 +63,7 @@ #include #include +#include #include #if defined(_MSC_VER) @@ -103,7 +104,7 @@ static const EVP_MD *GetDigest(FileTest *t, const std::string &name) { return nullptr; } -using KeyMap = std::map; +using KeyMap = std::map; // ImportPrivateKey evaluates a PrivateKey test in |t| and writes the resulting // private key to |key_map|. @@ -123,7 +124,7 @@ static bool ImportPrivateKey(FileTest *t, KeyMap *key_map) { t->PrintLine("Error reading private key."); return false; } - (*key_map)[key_name] = pkey.release(); + (*key_map)[key_name] = std::move(pkey); return true; } @@ -156,7 +157,7 @@ static bool TestEVP(FileTest *t, void *arg) { t->PrintLine("Could not find key '%s'.", key_name.c_str()); return false; } - EVP_PKEY *key = (*key_map)[key_name]; + EVP_PKEY *key = (*key_map)[key_name].get(); std::vector input, output; if (!t->GetBytes(&input, "Input") || @@ -212,11 +213,5 @@ int main(int argc, char **argv) { } KeyMap map; - int ret = FileTestMain(TestEVP, &map, argv[1]); - // TODO(davidben): When we can rely on a move-aware std::map, make KeyMap a - // map of ScopedEVP_PKEY instead. - for (const auto &pair : map) { - EVP_PKEY_free(pair.second); - } - return ret; + return FileTestMain(TestEVP, &map, argv[1]); } diff --git a/ssl/ssl_test.cc b/ssl/ssl_test.cc index 9558f1c3..bef88fb5 100644 --- a/ssl/ssl_test.cc +++ b/ssl/ssl_test.cc @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -932,23 +933,6 @@ static ScopedSSL_SESSION CreateTestSession(uint32_t number) { return ret; } -// TODO(davidben): Switch this to a |std::vector| once we can -// rely on a move-aware |std::vector|. -class ScopedSessionVector { - public: - explicit ScopedSessionVector(std::vector *sessions) - : sessions_(sessions) {} - - ~ScopedSessionVector() { - for (SSL_SESSION *session : *sessions_) { - SSL_SESSION_free(session); - } - } - - private: - std::vector *const sessions_; -}; - // Test that the internal session cache behaves as expected. static bool TestInternalSessionCache() { ScopedSSL_CTX ctx(SSL_CTX_new(TLS_method())); @@ -957,38 +941,38 @@ static bool TestInternalSessionCache() { } // Prepare 10 test sessions. - std::vector sessions; - ScopedSessionVector cleanup(&sessions); + std::vector sessions; for (int i = 0; i < 10; i++) { ScopedSSL_SESSION session = CreateTestSession(i); if (!session) { return false; } - sessions.push_back(session.release()); + sessions.push_back(std::move(session)); } SSL_CTX_sess_set_cache_size(ctx.get(), 5); // Insert all the test sessions. - for (SSL_SESSION *session : sessions) { - if (!SSL_CTX_add_session(ctx.get(), session)) { + for (const auto &session : sessions) { + if (!SSL_CTX_add_session(ctx.get(), session.get())) { return false; } } // Only the last five should be in the list. - std::vector expected; - expected.push_back(sessions[9]); - expected.push_back(sessions[8]); - expected.push_back(sessions[7]); - expected.push_back(sessions[6]); - expected.push_back(sessions[5]); + std::vector expected = { + sessions[9].get(), + sessions[8].get(), + sessions[7].get(), + sessions[6].get(), + sessions[5].get(), + }; if (!ExpectCache(ctx.get(), expected)) { return false; } // Inserting an element already in the cache should fail. - if (SSL_CTX_add_session(ctx.get(), sessions[7]) || + if (SSL_CTX_add_session(ctx.get(), sessions[7].get()) || !ExpectCache(ctx.get(), expected)) { return false; } @@ -999,32 +983,34 @@ static bool TestInternalSessionCache() { if (!collision || !SSL_CTX_add_session(ctx.get(), collision.get())) { return false; } - expected.clear(); - expected.push_back(collision.get()); - expected.push_back(sessions[9]); - expected.push_back(sessions[8]); - expected.push_back(sessions[6]); - expected.push_back(sessions[5]); + expected = { + collision.get(), + sessions[9].get(), + sessions[8].get(), + sessions[6].get(), + sessions[5].get(), + }; if (!ExpectCache(ctx.get(), expected)) { return false; } // Removing sessions behaves correctly. - if (!SSL_CTX_remove_session(ctx.get(), sessions[6])) { + if (!SSL_CTX_remove_session(ctx.get(), sessions[6].get())) { return false; } - expected.clear(); - expected.push_back(collision.get()); - expected.push_back(sessions[9]); - expected.push_back(sessions[8]); - expected.push_back(sessions[5]); + expected = { + collision.get(), + sessions[9].get(), + sessions[8].get(), + sessions[5].get(), + }; if (!ExpectCache(ctx.get(), expected)) { return false; } // Removing sessions requires an exact match. - if (SSL_CTX_remove_session(ctx.get(), sessions[0]) || - SSL_CTX_remove_session(ctx.get(), sessions[7]) || + if (SSL_CTX_remove_session(ctx.get(), sessions[0].get()) || + SSL_CTX_remove_session(ctx.get(), sessions[7].get()) || !ExpectCache(ctx.get(), expected)) { return false; }