2007-06-06 Mark Rowe <mrowe@apple.com>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 6 Jun 2007 10:55:43 +0000 (10:55 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 6 Jun 2007 10:55:43 +0000 (10:55 +0000)
        Reviewed by Maciej.

        http://bugs.webkit.org/show_bug.cgi?id=13988
        Bug 13988: Colon in file path crashes WebKit Nightly

        The WebKit launcher makes use of two `dyld' variables to coerce Safari into running with
        the bundled WebKit framework.  Both of these variables are interpreted as containing a
        colon-delimited list of paths.  There is no escaping mechanism defined, so if we detect
        a path with a colon in it we need to bail out to prevent `dyld' from throwing an error
        when we execute Safari.

        * WebKitLauncher/main.m:
        (main):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@22026 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/WebKitLauncher/main.m

index b5801f5..7be981d 100644 (file)
@@ -1,3 +1,19 @@
+2007-06-06  Mark Rowe  <mrowe@apple.com>
+
+        Reviewed by Maciej.
+
+        http://bugs.webkit.org/show_bug.cgi?id=13988
+        Bug 13988: Colon in file path crashes WebKit Nightly
+
+        The WebKit launcher makes use of two `dyld' variables to coerce Safari into running with
+        the bundled WebKit framework.  Both of these variables are interpreted as containing a
+        colon-delimited list of paths.  There is no escaping mechanism defined, so if we detect
+        a path with a colon in it we need to bail out to prevent `dyld' from throwing an error
+        when we execute Safari.
+
+        * WebKitLauncher/main.m:
+        (main):
+
 2007-06-05  Mark Rowe  <mrowe@apple.com>
 
         Reviewed by Anders.
index 6d26928..7d13994 100644 (file)
@@ -139,6 +139,11 @@ int main(int argc, char *argv[])
     NSString *executablePath = [safariBundle executablePath];
     NSString *frameworkPath = [[NSBundle mainBundle] resourcePath];
     NSString *pathToEnablerLib = [[NSBundle mainBundle] pathForResource:@"WebKitNightlyEnabler" ofType:@"dylib"];
+
+    if ([frameworkPath rangeOfString:@":"].location != NSNotFound ||
+        [pathToEnablerLib rangeOfString:@":"].location != NSNotFound)
+        displayErrorAndQuit(@"Unable to launch Safari",
+                            @"WebKit is located at a path containing an unsupported character.  Please move WebKit to a different location and try again.");
     
     NSMutableArray *arguments = [NSMutableArray arrayWithObjects:executablePath, @"-WebKitDeveloperExtras", @"YES", @"-WebKitScriptDebuggerEnabled", @"YES", nil];
     NSMutableDictionary *environment = [NSDictionary dictionaryWithObjectsAndKeys:frameworkPath, @"DYLD_FRAMEWORK_PATH", @"YES", @"WEBKIT_UNSET_DYLD_FRAMEWORK_PATH",