Index: chrome/common/sandbox_mac.mm |
diff --git a/chrome/common/sandbox_mac.mm b/chrome/common/sandbox_mac.mm |
index c514a10cf04754b1f9b781a6f0e8d9be2df378b5..303a538eb3f7f5f40ffad751f048236208b8eeec 100644 |
--- a/chrome/common/sandbox_mac.mm |
+++ b/chrome/common/sandbox_mac.mm |
@@ -309,15 +309,37 @@ bool EnableSandbox(SandboxProcessType sandbox_type, |
sandbox_data = |
[common_sandbox_prefix_data stringByAppendingString:sandbox_data]; |
- // Enable verbose logging if enabled on the command line. |
- // (see renderer.sb for details). |
+ // Enable verbose logging if enabled on the command line. (See common.sb |
+ // for details). |
const CommandLine *command_line = CommandLine::ForCurrentProcess(); |
- if (command_line->HasSwitch(switches::kEnableSandboxLogging)) { |
+ bool enable_logging = |
+ command_line->HasSwitch(switches::kEnableSandboxLogging); |
+ if (enable_logging) { |
sandbox_data = [sandbox_data |
stringByReplacingOccurrencesOfString:@";ENABLE_LOGGING" |
withString:@""]; |
} |
+ // Get the OS version. |
+ int32 major_version, minor_version, bugfix_version; |
+ base::SysInfo::OperatingSystemVersionNumbers(&major_version, |
+ &minor_version, &bugfix_version); |
+ bool snow_leopard_or_higher = |
+ (major_version > 10 || (major_version == 10 && minor_version >= 6)); |
+ |
+ // Without this, the sandbox will print a message to the system log every |
+ // time it denies a request. This floods the console with useless spew. The |
+ // (with no-log) syntax is only supported on 10.6+ |
+ if (snow_leopard_or_higher && !enable_logging) { |
+ sandbox_data = [sandbox_data |
+ stringByReplacingOccurrencesOfString:@"DISABLE_SANDBOX_DENIAL_LOGGING" |
+ withString:@"(with no-log)"]; |
+ } else { |
+ sandbox_data = [sandbox_data |
+ stringByReplacingOccurrencesOfString:@"DISABLE_SANDBOX_DENIAL_LOGGING" |
+ withString:@""]; |
+ } |
+ |
if (!allowed_dir.empty()) { |
// The sandbox only understands "real" paths. This resolving step is |
// needed so the caller doesn't need to worry about things like /var |
@@ -343,11 +365,7 @@ bool EnableSandbox(SandboxProcessType sandbox_type, |
} |
- int32 major_version, minor_version, bugfix_version; |
- base::SysInfo::OperatingSystemVersionNumbers(&major_version, |
- &minor_version, &bugfix_version); |
- |
- if (major_version > 10 || (major_version == 10 && minor_version >= 6)) { |
+ if (snow_leopard_or_higher) { |
// 10.6-only Sandbox rules. |
sandbox_data = [sandbox_data |
stringByReplacingOccurrencesOfString:@";10.6_ONLY" |