summaryrefslogtreecommitdiff
path: root/sal/osl
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2020-04-29 03:17:52 +0300
committerTor Lillqvist <tml@collabora.com>2020-04-29 21:45:52 +0200
commit740af1cf9be661b6074e4ce69c41cfba56853a2b (patch)
treeec572b5fbf51850e31ffdd30b0b91db90005e826 /sal/osl
parent88453fd13a653963b394b8f865ff104b5545f137 (diff)
Fix problems when running a sandboxed LO as instdir/.../soffice on macOS
The argv[0] passed to osl_setCommandArgs will then be the relative path and osl::realpath() will fail. Instead, use bootstrap_getExecutableFile() which calls _NSGetExecutablePath() to get the executable's pathname for g_command_args. Change-Id: I1345afe158d7b64871f6340733fb5490d5ca6bd8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93123 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
Diffstat (limited to 'sal/osl')
-rw-r--r--sal/osl/unx/process_impl.cxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/sal/osl/unx/process_impl.cxx b/sal/osl/unx/process_impl.cxx
index fe7dc9db5ccf..5d7f7644feb0 100644
--- a/sal/osl/unx/process_impl.cxx
+++ b/sal/osl/unx/process_impl.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_features.h>
+
#include <osl/process.h>
#include <limits.h>
@@ -224,6 +226,15 @@ void SAL_CALL osl_setCommandArgs (int argc, char ** argv)
}
if (ppArgs[0] != nullptr)
{
+#if HAVE_FEATURE_MACOSX_SANDBOX
+ // If we are called with a relative path in argv[0] in a sandboxed process
+ // osl::realpath() fails. So just use bootstrap_getExecutableFile() instead.
+ // Somewhat silly to use argv[0] and tediously figure out the absolute path from it
+ // anyway.
+ bootstrap_getExecutableFile(&ppArgs[0]);
+ OUString pArg0(ppArgs[0]);
+ osl_getFileURLFromSystemPath (pArg0.pData, &(ppArgs[0]));
+#else
#if !defined(ANDROID) && !defined(IOS) // No use searching PATH on Android or iOS
/* see @ osl_getExecutableFile(). */
if (rtl_ustr_indexOfChar (rtl_uString_getStr(ppArgs[0]), '/') == -1)
@@ -250,6 +261,7 @@ void SAL_CALL osl_setCommandArgs (int argc, char ** argv)
{
osl_getFileURLFromSystemPath (pArg0.pData, &(ppArgs[0]));
}
+#endif // !HAVE_FEATURE_MACOSX_SANDBOX
}
g_command_args.m_nCount = argc;
g_command_args.m_ppArgs = ppArgs;