From 31a95b118b1fd0df09aa58638ab385f10a747873 Mon Sep 17 00:00:00 2001 From: "pinkerton@chromium.org" Date: Fri, 6 Nov 2009 22:21:50 +0000 Subject: Bulletproof the url going into a std::string and ensure it's not going to be NULL, which throws and exception. BUG=26883 TEST=dragging things into the content area (urls, images, text, etc) Review URL: http://codereview.chromium.org/373016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31312 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/cocoa/web_drop_target.mm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/chrome/browser/cocoa/web_drop_target.mm b/chrome/browser/cocoa/web_drop_target.mm index 49a4dac..f47a414 100644 --- a/chrome/browser/cocoa/web_drop_target.mm +++ b/chrome/browser/cocoa/web_drop_target.mm @@ -184,11 +184,18 @@ using WebKit::WebDragOperationsMask; NSArray* titles = nil; [pboard getURLs:&urls andTitles:&titles]; NSString* urlString = [urls objectAtIndex:0]; - NSURL* url = [NSURL URLWithString:urlString]; - if (![url scheme]) - urlString = [[NSURL fileURLWithPath:urlString] absoluteString]; - data->url = GURL([urlString UTF8String]); - data->url_title = base::SysNSStringToUTF16([titles objectAtIndex:0]); + if ([urlString length]) { + NSURL* url = [NSURL URLWithString:urlString]; + if (![url scheme]) + urlString = [[NSURL fileURLWithPath:urlString] absoluteString]; + // Check again just to make sure to not assign NULL into a std::string, + // which throws an exception. + const char* utf8Url = [urlString UTF8String]; + if (utf8Url) { + data->url = GURL(utf8Url); + data->url_title = base::SysNSStringToUTF16([titles objectAtIndex:0]); + } + } } // Given |data|, which should not be nil, fill it in using the contents of the -- cgit v1.1