You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ar...@apache.org on 2021/06/12 13:38:55 UTC
[openoffice] 02/02: Ask for confirmation only when the OS is
involved
This is an automated email from the ASF dual-hosted git repository.
ardovm pushed a commit to branch bug128453
in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit b1ea03bf0eb0afec27d7d57290a24317f7e1d9ee
Author: Arrigo Marchiori <ar...@yahoo.it>
AuthorDate: Tue Jun 1 19:39:10 2021 +0200
Ask for confirmation only when the OS is involved
---
main/sfx2/source/appl/appopen.cxx | 88 ++++++++++++++++-----------------------
1 file changed, 35 insertions(+), 53 deletions(-)
diff --git a/main/sfx2/source/appl/appopen.cxx b/main/sfx2/source/appl/appopen.cxx
index 44c3000..4b58708 100644
--- a/main/sfx2/source/appl/appopen.cxx
+++ b/main/sfx2/source/appl/appopen.cxx
@@ -930,58 +930,7 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
INetProtocol aINetProtocol = aINetURLObject.GetProtocol();
SvtExtendedSecurityOptions aExtendedSecurityOptions;
SvtExtendedSecurityOptions::OpenHyperlinkMode eMode = aExtendedSecurityOptions.GetOpenHyperlinkMode();
- if ( eMode == SvtExtendedSecurityOptions::OPEN_WITHSECURITYCHECK )
- {
- /*!!! pb: #i49802# no security warning any longer
- ardovm: Restored security checks in March 2021 */
- // Check if file URL is a directory. This is not insecure!
- sal_Bool bIsDir = aINetURLObject.hasFinalSlash() ||
- ( osl::Directory(aURL.Main).open() ==
- osl::Directory::E_None );
- // Use SvtExtendedSecurityOptions::IsSecureHyperlink()
- // to check the extension of the link destination.
- sal_Bool bSafeExtension = aExtendedSecurityOptions.IsSecureHyperlink(aURL.Complete);
- // We consider some protocols unsafe
- sal_Bool bUnsafeProtocol;
- switch (aINetProtocol) {
- case INET_PROT_HTTP:
- case INET_PROT_HTTPS:
- bSafeExtension = true; // trust the browser to prevent unsafe extensions
- // case INET_PROT_FTP:
- case INET_PROT_VND_SUN_STAR_HELP:
- case INET_PROT_MAILTO:
- bUnsafeProtocol = false;
- break;
- default: // Anything else, including INET_PROT_FILE
- bUnsafeProtocol = true;
- break;
- }
- if ( (!bIsDir && !bSafeExtension) || bUnsafeProtocol )
- {
- // Security check for local files depending on the extension
- vos::OGuard aGuard( Application::GetSolarMutex() );
- Window *pWindow = SFX_APP()->GetTopWindow();
-
- String aSecurityWarningBoxTitle( SfxResId( RID_SECURITY_WARNING_TITLE ));
- WarningBox aSecurityWarningBox( pWindow, SfxResId( RID_SECURITY_WARNING_HYPERLINK ));
- aSecurityWarningBox.SetText( aSecurityWarningBoxTitle );
-
- // Replace %s with the real file name
- String aMsgText = aSecurityWarningBox.GetMessText();
- String aMainURL( aURL.Main );
- String aFileNameInMsg;
-
- if (!utl::LocalFileHelper::ConvertURLToPhysicalName( aMainURL, aFileNameInMsg )) {
- aFileNameInMsg = aMainURL;
- }
- aMsgText.SearchAndReplaceAscii( "%s", aFileNameInMsg );
- aSecurityWarningBox.SetMessText( aMsgText );
-
- if( aSecurityWarningBox.Execute() == RET_NO )
- return;
- }
- }
- else if ( eMode == SvtExtendedSecurityOptions::OPEN_NEVER && aINetProtocol != INET_PROT_VND_SUN_STAR_HELP )
+ if ( eMode == SvtExtendedSecurityOptions::OPEN_NEVER && aINetProtocol != INET_PROT_VND_SUN_STAR_HELP )
{
vos::OGuard aGuard( Application::GetSolarMutex() );
Window *pWindow = SFX_APP()->GetTopWindow();
@@ -1097,7 +1046,40 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
if (SFX_APP()->IsSecureURL(rtl::OUString(), &aReferer))
{
::rtl::OUString aURLString( aURL.Complete );
-
+ // Before letting the OS execute the URL, we may have to request for
+ // confirmation
+ if ( eMode == SvtExtendedSecurityOptions::OPEN_WITHSECURITYCHECK ) {
+ // Check if file URL is a directory. This is not insecure!
+ sal_Bool bIsDir = aINetURLObject.hasFinalSlash() ||
+ ( osl::Directory(aURL.Main).open() ==
+ osl::Directory::E_None );
+ // Use SvtExtendedSecurityOptions::IsSecureHyperlink()
+ // to check the extension of the link destination.
+ sal_Bool bSafeExtension = aExtendedSecurityOptions.IsSecureHyperlink(aURL.Complete);
+ if (!bIsDir && !bSafeExtension) {
+ // Security check for local files depending on the extension
+ vos::OGuard aGuard( Application::GetSolarMutex() );
+ Window *pWindow = SFX_APP()->GetTopWindow();
+
+ String aSecurityWarningBoxTitle( SfxResId( RID_SECURITY_WARNING_TITLE ));
+ WarningBox aSecurityWarningBox( pWindow, SfxResId( RID_SECURITY_WARNING_HYPERLINK ));
+ aSecurityWarningBox.SetText( aSecurityWarningBoxTitle );
+
+ // Replace %s with the real file name
+ String aMsgText = aSecurityWarningBox.GetMessText();
+ String aMainURL( aURL.Main );
+ String aFileNameInMsg;
+
+ if (!utl::LocalFileHelper::ConvertURLToPhysicalName( aMainURL, aFileNameInMsg )) {
+ aFileNameInMsg = aMainURL;
+ }
+ aMsgText.SearchAndReplaceAscii( "%s", aFileNameInMsg );
+ aSecurityWarningBox.SetMessText( aMsgText );
+
+ if( aSecurityWarningBox.Execute() == RET_NO )
+ return;
+ }
+ }
try
{
// give os this file