From 7ac6207a79b1850367e59e03c0b7f8807e6ae4b0 Mon Sep 17 00:00:00 2001 From: Jens-Heiner Rechtien Date: Thu, 17 Sep 2009 16:34:35 +0000 Subject: CWS-TOOLING: integrate CWS vcl105 2009-09-07 Philipp Lohmann fix path issues 2009-09-07 hdu #i104525# Aqua: workaround OSX problem in RecentlyUsed list 2009-09-07 Philipp Lohmann add missing dollar sign 2009-09-07 Philipp Lohmann remove warnings 2009-09-07 hdu #i104011# need to use real-vals in cff-subsetter for some fonts 2009-09-05 Philipp Lohmann #i103674# less noise 2009-09-05 Philipp Lohmann #i103674# add garmin communicator to list of crashing plugins 2009-09-05 Philipp Lohmann #i103674# confiuration option to disable plugin support 2009-09-05 Philipp Lohmann merge #i102735# 2009-09-05 Philipp Lohmann #i88802# enable transparency resolution for PDF/A 2009-09-04 Philipp Lohmann rebase to DEV300m57 2009-09-03 Philipp Lohmann #i90083# fix a typo 2009-09-03 Philipp Lohmann merge 2009-09-03 Philipp Lohmann #i90083# workaround for application frame switching 2009-09-03 hdu #i104720# better description for --without-fonts configure option 2009-09-02 hdu #i104723# update third-party fonts 2009-09-02 hdu #i104723# update default-installed Liberation fonts from 1.04->1.05.1.20090721 2009-09-02 hdu #i104720# update default-installed DejaVu fonts from 2.21->2.30 2009-09-02 hdu #i89682# add Gentium fonts to default installation 2009-09-02 hdu #i89682# add Gentium fonts to default installation 2009-09-01 hdu #i104011# fix vertical offset in PDF-export of USP-layouted text 2009-08-27 Philipp Lohmann #i102033# ignore transients 2009-08-27 Philipp Lohmann merge 2009-08-27 Philipp Lohmann fix warning, remove crappy early exits 2009-08-26 Philipp Lohmann #i63494# user event time for generic plugin always regotten to work around metacity 2009-08-26 Philipp Lohmann merge 2009-08-26 Philipp Lohmann #i104526# fix string conversion 2009-08-25 Philipp Lohmann #b6855541# show newly added driver, repair remove driver 2009-08-25 Philipp Lohmann #i104469# maximizing issue (thanks haggai) --- shell/source/aqua/sysshell/systemshell.cxx | 38 +++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'shell/source/aqua') diff --git a/shell/source/aqua/sysshell/systemshell.cxx b/shell/source/aqua/sysshell/systemshell.cxx index 276759aa5a..11d02aa921 100644 --- a/shell/source/aqua/sysshell/systemshell.cxx +++ b/shell/source/aqua/sysshell/systemshell.cxx @@ -71,17 +71,49 @@ static rtl::OUString translateToExternalUrl(const rtl::OUString& internalUrl) return extUrl; } +// #i104525# many versions of OSX have problems with some URLs: +// when an app requests OSX to add one of these URLs to the "Recent Items" list +// then this app gets killed (TextEdit, Preview, etc. and also OOo) +static bool isDangerousUrl( const rtl::OUString& rUrl) +{ + // use a heuristic that detects all known cases since there is no official comment + // on the exact impact and root cause of the OSX bug + const int nLen = rUrl.getLength(); + const sal_Unicode* p = rUrl.getStr(); + for( int i = 0; i < nLen-3; ++i, ++p) { + if( p[0] != '%') + continue; + // escaped percent? + if( (p[1] == '2') && (p[2] == '5')) + return true; + // escapes are considered to be UTF-8 encoded + // => check for invalid UTF-8 leading byte + if( (p[1] != 'f') && (p[1] != 'F')) + continue; + int cLowNibble = p[2]; + if( (cLowNibble >= '0') && (cLowNibble <= '9')) + return false; + if( cLowNibble >= 'a') + cLowNibble -= 'a' - 'A'; + if( (cLowNibble < 'A') || (cLowNibble >= 'C')) + return true; + } + + return false; +} + namespace SystemShell { //############################## - void AddToRecentDocumentList(const rtl::OUString& aFileUrl, const rtl::OUString& aMimeType) + void AddToRecentDocumentList(const rtl::OUString& aFileUrl, const rtl::OUString& /*aMimeType*/) { // Convert file URL for external use (see above) rtl::OUString externalUrl = translateToExternalUrl(aFileUrl); if( 0 == externalUrl.getLength() ) externalUrl = aFileUrl; - - if( externalUrl.getLength() ) + + if( externalUrl.getLength() + && !isDangerousUrl( externalUrl)) { NSString* pString = [[NSString alloc] initWithCharacters: externalUrl.getStr() length: externalUrl.getLength()]; NSURL* pURL = [NSURL URLWithString: pString]; -- cgit v1.2.1