Index: content/common/common.sb |
diff --git a/content/common/common.sb b/content/common/common.sb |
index 79b96e0bee7db572cd20baaef2077fc4b5374474..a3cf89b96c2b002bc846c086c2ffeffaa76f83ee 100644 |
--- a/content/common/common.sb |
+++ b/content/common/common.sb |
@@ -7,14 +7,30 @@ |
; included at the start of all other sandbox configuration files in Chrome. |
(version 1) |
-; DISABLE_SANDBOX_DENIAL_LOGGING expands to syntax that turns off log message |
-; printing on sandbox exceptions; this functionality only exists on 10.6. The |
-; --enable-sandbox-logging flag or system versions <10.6 cause this flag to |
-; expand to an empty string. http://crbug.com/26621 |
-(deny default @DISABLE_SANDBOX_DENIAL_LOGGING@) |
+; Helper function to check if a param is set to true. |
+(define (param-true? str) (string=? (param str) "TRUE")) |
+ |
+; Helper function to determine if a parameter is defined or not. |
+(define (param-defined? str) (string? (param str))) |
+ |
+; Define constants for all of the parameter strings passed in. |
+(define disable-sandbox-denial-logging "DISABLE_SANDBOX_DENIAL_LOGGING") |
+(define enable-logging "ENABLE_LOGGING") |
+(define component-build-workaround "COMPONENT_BUILD_WORKAROUND") |
+(define permitted-dir "PERMITTED_DIR") |
+(define lion-or-later "LION_OR_LATER") |
+(define homedir-as-literal "USER_HOMEDIR_AS_LITERAL") |
+ |
+; Consumes a subpath and appends it to the user's homedir path. |
+(define (user-homedir-path subpath) (string-append (param homedir-as-literal) subpath)) |
+ |
+; DISABLE_SANDBOX_DENIAL_LOGGING turns off log messages in the system log. |
+(if (param-true? disable-sandbox-denial-logging) |
+ (deny default (with no-log)) |
+ (deny default)) |
; Support for programmatically enabling verbose debugging. |
-;ENABLE_LOGGING (debug deny) |
+(if (param-true? enable-logging) (debug deny)) |
; Allow sending signals to self - http://crbug.com/20370 |
(allow signal (target self)) |
@@ -22,24 +38,20 @@ |
; Needed for full-page-zoomed controls - http://crbug.com/11325 |
(allow sysctl-read) |
-; Each line is marked with the System version that needs it. |
-; This profile is tested with the following system versions: |
-; 10.5.6, 10.6 |
- |
; Loading System Libraries. |
(allow file-read* |
(regex #"^/System/Library/Frameworks($|/)") |
(regex #"^/System/Library/PrivateFrameworks($|/)") |
- (regex #"^/System/Library/CoreServices($|/)")) ; 10.5.6 |
+ (regex #"^/System/Library/CoreServices($|/)")) |
-; Needed for IPC on 10.6 |
(allow ipc-posix-shm) |
; Allow direct access to /dev/urandom, similar to Linux/POSIX, to allow |
; third party code (eg: bits of Adobe Flash and NSS) to function properly. |
(allow file-read-data file-read-metadata (literal "/dev/urandom")) |
-; Component build workaround for a dyld bug, used on OS X <= 10.6. |
; Enables reading file metadata for the Chrome bundle and its parent paths. |
; http://crbug.com/127465 |
-@COMPONENT_BUILD_WORKAROUND@ |
+(if (and (param-defined? component-build-workaround) |
+ (param-true? component-build-workaround)) |
+ (allow file-read-metadata )) |