summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgspencer@chromium.org <gspencer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-04 23:34:35 +0000
committergspencer@chromium.org <gspencer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-04 23:34:35 +0000
commit7dfd3cbdb6c1462d5fd8caf993278450f0a1841e (patch)
tree3dbbce68e77668ac7132acb3b618c1d7f6360b13
parent42b933fe8d7733d3a5c9f2afa65b186db7c51533 (diff)
downloadchromium_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.cc4
-rw-r--r--tools/heapcheck/suppressions.txt19
-rw-r--r--tools/valgrind/memcheck/suppressions.txt10
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