diff options
author | gspencer@chromium.org <gspencer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-04 23:34:35 +0000 |
---|---|---|
committer | gspencer@chromium.org <gspencer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-04 23:34:35 +0000 |
commit | 7dfd3cbdb6c1462d5fd8caf993278450f0a1841e (patch) | |
tree | 3dbbce68e77668ac7132acb3b618c1d7f6360b13 | |
parent | 42b933fe8d7733d3a5c9f2afa65b186db7c51533 (diff) | |
download | chromium_src-7dfd3cbdb6c1462d5fd8caf993278450f0a1841e.zip chromium_src-7dfd3cbdb6c1462d5fd8caf993278450f0a1841e.tar.gz chromium_src-7dfd3cbdb6c1462d5fd8caf993278450f0a1841e.tar.bz2 |
Fix memory leak in OncNetworkParser, remove suppressions.
For this change, I fixed a real memory leak I introduced, and I'm also widening the suppression from bug 51988 for using OpenTestNSSDB, since now multiple tests use that path, and it's the same leak.
BUG=chromium:102988,chromium:51988
TEST=Ran valgrind trybots
Review URL: http://codereview.chromium.org/8479011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108741 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/cros/onc_network_parser.cc | 4 | ||||
-rw-r--r-- | tools/heapcheck/suppressions.txt | 19 | ||||
-rw-r--r-- | tools/valgrind/memcheck/suppressions.txt | 10 |
3 files changed, 3 insertions, 30 deletions
diff --git a/chrome/browser/chromeos/cros/onc_network_parser.cc b/chrome/browser/chromeos/cros/onc_network_parser.cc index 2b0b8d0..b3a8e27 100644 --- a/chrome/browser/chromeos/cros/onc_network_parser.cc +++ b/chrome/browser/chromeos/cros/onc_network_parser.cc @@ -12,6 +12,7 @@ #include "chrome/browser/chromeos/cros/network_library.h" #include "chrome/browser/chromeos/login/user_manager.h" #include "net/base/cert_database.h" +#include "net/base/crypto_module.h" #include "net/base/net_errors.h" #include "net/base/x509_certificate.h" #include "third_party/cros_system_api/dbus/service_constants.h" @@ -303,8 +304,9 @@ bool OncNetworkParser::ParseClientCertificate( } // Since this has a private key, always use the private module. + scoped_refptr<net::CryptoModule> module(cert_database.GetPrivateModule()); int result = cert_database.ImportFromPKCS12( - cert_database.GetPrivateModule(), decoded_pkcs12, string16(), false); + module.get(), decoded_pkcs12, string16(), false); if (result != net::OK) { LOG(WARNING) << "ONC File: Unable to import Client certificate at index " << cert_index diff --git a/tools/heapcheck/suppressions.txt b/tools/heapcheck/suppressions.txt index 2e7b3c5..8d4e1e2 100644 --- a/tools/heapcheck/suppressions.txt +++ b/tools/heapcheck/suppressions.txt @@ -99,7 +99,6 @@ fun:crypto::::NSSInitSingleton::OpenUserDB fun:crypto::::NSSInitSingleton::OpenTestNSSDB fun:crypto::OpenTestNSSDB - fun:net::CertDatabaseNSSTest::SetUpTestCase } { bug_66941_a @@ -1667,21 +1666,3 @@ ... fun:PluginLoaderPosix::GetPluginsToLoad } -{ - bug_102988_a - Heapcheck:Leak - fun:net::CryptoModule::CreateFromHandle - fun:net::CertDatabase::GetPrivateModule - fun:chromeos::OncNetworkParser::ParseClientCertificate - fun:chromeos::OncNetworkParser::ParseCertificate - fun:chromeos::OncNetworkParserTest_TestAddClientCertificate_Test::TestBody -} -{ - bug_102988_b - Heapcheck:Leak - ... - fun:crypto::::NSSInitSingleton::OpenUserDB - fun:crypto::::NSSInitSingleton::OpenTestNSSDB - fun:crypto::OpenTestNSSDB - fun:chromeos::OncNetworkParserTest::SetUpTestCase -} diff --git a/tools/valgrind/memcheck/suppressions.txt b/tools/valgrind/memcheck/suppressions.txt index 6088fa6..958a600 100644 --- a/tools/valgrind/memcheck/suppressions.txt +++ b/tools/valgrind/memcheck/suppressions.txt @@ -5185,16 +5185,6 @@ fun:_ZN17PluginLoaderPosix19LoadPluginsInternalEv fun:_ZN4base8internal8Invoker1ILb0ENS0_15InvokerStorage1IM17PluginLoaderPosixFvvE13scoped_refptrIS3_EEES5_E8DoInvokeEPNS0_18InvokerStorageBaseE } -{ - bug_102988 - Memcheck:Leak - fun:_Znw* - fun:_ZN3net12CryptoModule16CreateFromHandleEP15PK11SlotInfoStr - fun:_ZNK3net12CertDatabase16GetPrivateModuleEv - fun:_ZN8chromeos16OncNetworkParser22ParseClientCertificateEiPN4base15DictionaryValueE - fun:_ZN8chromeos16OncNetworkParser16ParseCertificateEi - fun:_ZN8chromeos50OncNetworkParserTest_TestAddClientCertificate_Test8TestBodyEv -} #----------------------------------------------------------------------- # 4. These only occur on our Google workstations |