summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-14 13:31:15 +0000
committerpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-14 13:31:15 +0000
commitdb778a24822f8324b14d1704752f30bcca51e799 (patch)
treeda134b4895dd6f55b7d4041c1247beb7650e9154
parent50431b97f7a1e41be35cd03f717fa73fdac9d9a7 (diff)
downloadchromium_src-db778a24822f8324b14d1704752f30bcca51e799.zip
chromium_src-db778a24822f8324b14d1704752f30bcca51e799.tar.gz
chromium_src-db778a24822f8324b14d1704752f30bcca51e799.tar.bz2
Fixed leaky code in the UserDataDir policy code for mac.
BUG=72741 TEST=Valgrind bots should be happy again. Review URL: http://codereview.chromium.org/6475008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74814 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/chrome_main_mac.mm22
-rw-r--r--tools/valgrind/memcheck/suppressions_mac.txt13
2 files changed, 9 insertions, 26 deletions
diff --git a/chrome/app/chrome_main_mac.mm b/chrome/app/chrome_main_mac.mm
index 3aca6e4..10239a1 100644
--- a/chrome/app/chrome_main_mac.mm
+++ b/chrome/app/chrome_main_mac.mm
@@ -61,7 +61,7 @@ std::string TranslateMacVariablesInPolicy(
}
position = result.find(kMachineNamePolicyVarName);
if (position != std::string::npos) {
- NSString *machinename = [[NSHost currentHost] name];
+ NSString* machinename = [[NSHost currentHost] name];
if (machinename) {
result.replace(position, strlen(kMachineNamePolicyVarName),
base::SysNSStringToUTF8(machinename));
@@ -79,17 +79,13 @@ std::string TranslateMacVariablesInPolicy(
void CheckUserDataDirPolicy(FilePath* user_data_dir) {
// Since the configuration management infrastructure is not initialized when
// this code runs, read the policy preference directly.
- CFStringRef key = base::SysUTF8ToCFStringRef(policy::key::kUserDataDir);
- CFPropertyListRef value =
- CFPreferencesCopyAppValue(key, kCFPreferencesCurrentApplication);
- if (value &&
- CFPreferencesAppValueIsForced(key, kCFPreferencesCurrentApplication)) {
- if (CFGetTypeID(value) == CFStringGetTypeID()) {
- std::string string_value =
- base::SysCFStringRefToUTF8((CFStringRef)value);
- // Now replace any vars the user might have used.
- string_value = TranslateMacVariablesInPolicy(string_value);
- *user_data_dir = FilePath(string_value);
- }
+ NSString* key = base::SysUTF8ToNSString(policy::key::kUserDataDir);
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ NSString* value = [defaults stringForKey:key];
+ if (value && [defaults objectIsForcedForKey:key]) {
+ std::string string_value = base::SysNSStringToUTF8(value);
+ // Now replace any vars the user might have used.
+ string_value = TranslateMacVariablesInPolicy(string_value);
+ *user_data_dir = FilePath(string_value);
}
}
diff --git a/tools/valgrind/memcheck/suppressions_mac.txt b/tools/valgrind/memcheck/suppressions_mac.txt
index 52b53c9..427a3bd3 100644
--- a/tools/valgrind/memcheck/suppressions_mac.txt
+++ b/tools/valgrind/memcheck/suppressions_mac.txt
@@ -1340,16 +1340,3 @@
fun:_ZN12_GLOBAL__N_131MenuButtonTest_OpenOnClick_Test8TestBodyEv
fun:_ZN7testingL35HandleExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS3_FS2_vEPKc
}
-{
- bug_72833
- Memcheck:Leak
- fun:malloc_zone_malloc
- fun:_CFRuntimeCreateInstance
- fun:__CFStringCreateImmutableFunnel3
- fun:CFStringCreateWithBytes
- fun:_ZN4base12_GLOBAL__N_1L33STLStringToCFStringWithEncodingsTISsEEPK10__CFStringRKT_m
- fun:_ZN4base20SysUTF8ToCFStringRefERKSs
- fun:_Z22CheckUserDataDirPolicyP8FilePath
- fun:ChromeMain
- fun:main
-}