Reviewed by Darin Adler.
authortomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2006 19:21:47 +0000 (19:21 +0000)
committertomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2006 19:21:47 +0000 (19:21 +0000)
        <rdar://problem/4198378> Crash on a CFRelease when visiting http://www.akella.com/

        * Plugins/WebBaseNetscapePluginView.m:
        (-[WebBaseNetscapePluginView requestWithURLCString:]):
The true source of this crash is that the URL string is sometimes not NULL-terminated, which is the
Real Player plugin's fault.  That has been filed as 4439591.
However, we can be more bulletproof here by switching the URL string encoding from Windows Latin 1
to ISO Latin 1, so that any NULL-terminated string can be represented.  (As Darin and I found out
last night, Windows Latin 1 has "holes" in certain character ranges and thus cannot encode arbitrary
C strings).

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

WebKit/ChangeLog
WebKit/Plugins/WebBaseNetscapePluginView.m

index 27fb36603ae3704674765d4906c38401c3e1774b..281dda8e2b392ca77ea41c560ae8fbc14c67f29d 100644 (file)
@@ -1,3 +1,18 @@
+2006-02-09  Tim Omernick  <timo@apple.com>
+
+        Reviewed by Darin Adler.
+
+        <rdar://problem/4198378> Crash on a CFRelease when visiting http://www.akella.com/
+
+        * Plugins/WebBaseNetscapePluginView.m:
+        (-[WebBaseNetscapePluginView requestWithURLCString:]):
+       The true source of this crash is that the URL string is sometimes not NULL-terminated, which is the
+       Real Player plugin's fault.  That has been filed as 4439591.
+       However, we can be more bulletproof here by switching the URL string encoding from Windows Latin 1
+       to ISO Latin 1, so that any NULL-terminated string can be represented.  (As Darin and I found out
+       last night, Windows Latin 1 has "holes" in certain character ranges and thus cannot encode arbitrary
+       C strings).
+
 2006-02-09  Maciej Stachowiak  <mjs@apple.com>
 
         Rubber stamped by Anders. 
 2006-02-09  Maciej Stachowiak  <mjs@apple.com>
 
         Rubber stamped by Anders. 
index 64ef4e624d9aa58f46ddd4df09dd9baa450c1079..77ea76a7f760c1538f832ae1cdb5b29ea29ecad8 100644 (file)
@@ -1415,17 +1415,18 @@ static OSStatus TSMEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEve
 
 - (NSMutableURLRequest *)requestWithURLCString:(const char *)URLCString
 {
 
 - (NSMutableURLRequest *)requestWithURLCString:(const char *)URLCString
 {
-    if (!URLCString) {
+    if (!URLCString)
         return nil;
         return nil;
-    }
     
     
-    CFStringRef string = CFStringCreateWithCString(kCFAllocatorDefault, URLCString, kCFStringEncodingWindowsLatin1);
+    CFStringRef string = CFStringCreateWithCString(kCFAllocatorDefault, URLCString, kCFStringEncodingISOLatin1);
+    ASSERT(string); // All strings should be representable in ISO Latin 1
+    
     NSString *URLString = [(NSString *)string _web_stringByStrippingReturnCharacters];
     NSURL *URL = [NSURL _web_URLWithDataAsString:URLString relativeToURL:baseURL];
     CFRelease(string);
     NSString *URLString = [(NSString *)string _web_stringByStrippingReturnCharacters];
     NSURL *URL = [NSURL _web_URLWithDataAsString:URLString relativeToURL:baseURL];
     CFRelease(string);
-    if (!URL) {
+    if (!URL)
         return nil;
         return nil;
-    }
+
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
     [request _web_setHTTPReferrer:[[[self webFrame] _bridge] referrer]];
     return request;
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
     [request _web_setHTTPReferrer:[[[self webFrame] _bridge] referrer]];
     return request;