summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-11-09 16:24:56 +0100
committerStephan Bergmann <sbergman@redhat.com>2013-11-09 16:24:56 +0100
commit16b91e13c726b5b3f43c1aafde6fb8c4c18e3c77 (patch)
tree4b28ef83eae766ddc982389ac9aa13a5db96c87e
parent2778530032a2291cb8f9a1ac52f421597182a3e3 (diff)
Converge on SvtSecurityOptions::isTrustedLocation
Change-Id: Ibcf4b7d9d11295c7679637a37d41dc2960e04f8f
-rw-r--r--include/unotools/securityoptions.hxx5
-rw-r--r--unotools/source/config/securityoptions.cxx35
-rw-r--r--xmlsecurity/source/component/documentdigitalsignatures.cxx14
3 files changed, 23 insertions, 31 deletions
diff --git a/include/unotools/securityoptions.hxx b/include/unotools/securityoptions.hxx
index fc6c49c18971..a11aff9e8bb7 100644
--- a/include/unotools/securityoptions.hxx
+++ b/include/unotools/securityoptions.hxx
@@ -188,6 +188,11 @@ class UNOTOOLS_DLLPUBLIC SAL_WARN_UNUSED SvtSecurityOptions : public utl::detail
bool isSecureMacroUri(OUString const & uri, OUString const & referer)
const;
+ /**
+ Check whether the given uri is a trusted location.
+ */
+ bool isTrustedLocationUri(OUString const & uri) const;
+
::com::sun::star::uno::Sequence< Certificate > GetTrustedAuthors ( ) const ;
void SetTrustedAuthors ( const ::com::sun::star::uno::Sequence< Certificate >& rAuthors ) ;
diff --git a/unotools/source/config/securityoptions.cxx b/unotools/source/config/securityoptions.cxx
index 2271219747f9..c31e131afdf4 100644
--- a/unotools/source/config/securityoptions.cxx
+++ b/unotools/source/config/securityoptions.cxx
@@ -21,6 +21,7 @@
#include <unotools/securityoptions.hxx>
#include <unotools/configmgr.hxx>
#include <unotools/configitem.hxx>
+#include <unotools/ucbhelper.hxx>
#include <tools/debug.hxx>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Sequence.hxx>
@@ -1041,29 +1042,27 @@ bool SvtSecurityOptions::isSecureMacroUri(
}
// fall through
case INET_PROT_SLOT:
- if (referer.equalsIgnoreAsciiCase("private:user")) {
- return true;
- }
- {
- MutexGuard g(GetInitMutex());
- for (sal_Int32 i = 0;
- i != m_pDataContainer->m_seqSecureURLs.getLength(); ++i)
- {
- OUString pref(m_pDataContainer->m_seqSecureURLs[i]);
- pref.endsWith("/", &pref);
- if (referer.equalsIgnoreAsciiCase(pref)
- || referer.startsWithIgnoreAsciiCase(pref + "/"))
- {
- return true;
- }
- }
- return false;
- }
+ return referer.equalsIgnoreAsciiCase("private:user")
+ || isTrustedLocationUri(referer);
default:
return true;
}
}
+bool SvtSecurityOptions::isTrustedLocationUri(OUString const & uri) const {
+ MutexGuard g(GetInitMutex());
+ for (sal_Int32 i = 0; i != m_pDataContainer->m_seqSecureURLs.getLength();
+ ++i)
+ {
+ if (UCBContentHelper::IsSubPath(
+ m_pDataContainer->m_seqSecureURLs[i], uri))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
sal_Int32 SvtSecurityOptions::GetMacroSecurityLevel() const
{
MutexGuard aGuard( GetInitMutex() );
diff --git a/xmlsecurity/source/component/documentdigitalsignatures.cxx b/xmlsecurity/source/component/documentdigitalsignatures.cxx
index ceb76148066e..39095604ad3f 100644
--- a/xmlsecurity/source/component/documentdigitalsignatures.cxx
+++ b/xmlsecurity/source/component/documentdigitalsignatures.cxx
@@ -36,12 +36,10 @@
#include <com/sun/star/ucb/XCommandEnvironment.hpp>
#include <com/sun/star/ucb/XCommandProcessor.hpp>
#include <com/sun/star/ucb/Command.hpp>
-#include <tools/urlobj.hxx>
#include <vcl/msgbox.hxx>
#include <unotools/securityoptions.hxx>
#include <com/sun/star/security/CertificateValidity.hpp>
#include <com/sun/star/security/SerialNumberAdapter.hpp>
-#include <unotools/ucbhelper.hxx>
#include "comphelper/documentconstants.hxx"
#include "com/sun/star/lang/IllegalArgumentException.hpp"
@@ -439,17 +437,7 @@ Reference< css::security::XCertificate > DocumentDigitalSignatures::chooseCertif
::sal_Bool DocumentDigitalSignatures::isLocationTrusted( const OUString& Location ) throw (RuntimeException)
{
- sal_Bool bFound = sal_False;
- INetURLObject aLocObj( Location );
- INetURLObject aLocObjLowCase( Location.toAsciiLowerCase() ); // will be used for case insensitive comparing
-
- Sequence< OUString > aSecURLs = SvtSecurityOptions().GetSecureURLs();
- const OUString* pSecURLs = aSecURLs.getConstArray();
- const OUString* pSecURLsEnd = pSecURLs + aSecURLs.getLength();
- for ( ; pSecURLs != pSecURLsEnd && !bFound; ++pSecURLs )
- bFound = ::utl::UCBContentHelper::IsSubPath( *pSecURLs, Location );
-
- return bFound;
+ return SvtSecurityOptions().isTrustedLocationUri(Location);
}
void DocumentDigitalSignatures::addAuthorToTrustedSources(