summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <stephan.bergmann@allotropia.de>2024-01-29 20:52:20 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2024-02-01 10:22:20 +0100
commit3712014bc7635187ee994126b505e58e2b3c7786 (patch)
tree9e0e1617be9a354abdb2aa331354e758673510f9
parentd19f051dd4244bdfb58458d4287305b59c2915c6 (diff)
tdf#159307 Fix GetCertificateManager
...which had always cut off an existing path ever since 92b6ffcd9f687cc54a0fc3801ca85c7e4d77512f "Allow selecting a custom certificate manager", for reasons that are unclear to me. So if an existing setting contains at least one slash (or backslash, on Windows), try to use it as-is; otherwise, keep searching for it in aPath. (And, in any case, make sure to report back the given value in sExecutable.) Change-Id: I8b2b6ac7a449d7afd02e029ff46d4c79e6b824e1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162703 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162800 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
-rw-r--r--xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx15
1 files changed, 11 insertions, 4 deletions
diff --git a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
index 3cd13c6060cf..f2bb37241b7c 100644
--- a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
+++ b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
@@ -154,16 +154,23 @@ void GetCertificateManager(OUString& sExecutable)
OUString aCetMgrConfig = officecfg::Office::Common::Security::Scripting::CertMgrPath::get();
if (!aCetMgrConfig.isEmpty())
{
+ if (aCetMgrConfig.indexOf('/') != -1
#ifdef _WIN32
- sal_Int32 nLastBackslashIndex = aCetMgrConfig.lastIndexOf('\\');
-#else
- sal_Int32 nLastBackslashIndex = aCetMgrConfig.lastIndexOf('/');
+ || aCetMgrConfig.indexOf('\\') != -1
#endif
+ )
+ {
+ sExecutable = aCetMgrConfig;
+ return;
+ }
osl::FileBase::RC searchError = osl::File::searchFileURL(
- aCetMgrConfig.copy(0, nLastBackslashIndex + 1), aPath,
+ aCetMgrConfig, aPath,
aFoundGUIServer);
if (searchError == osl::FileBase::E_None)
+ {
+ osl::File::getSystemPathFromFileURL(aFoundGUIServer, sExecutable);
return;
+ }
}
for (const auto& rServer: aGUIServers)