diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2009-09-17 16:34:35 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2009-09-17 16:34:35 +0000 |
commit | aae0ed4a283cc4a2d58d2eda10d12d0877913182 (patch) | |
tree | d270defcbcdab5759400f9b455e8dced83aa8452 /shell | |
parent | 49c5701fbbc6a93ca0410719564ee22b5166ee48 (diff) |
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)
Diffstat (limited to 'shell')
-rw-r--r-- | shell/source/aqua/sysshell/systemshell.cxx | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/shell/source/aqua/sysshell/systemshell.cxx b/shell/source/aqua/sysshell/systemshell.cxx index a9b4afe1a966..a9535c849f77 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]; |