diff options
-rwxr-xr-x | desktop/scripts/unopkg.sh | 19 | ||||
-rw-r--r-- | desktop/source/pkgchk/unopkg/unopkg_app.cxx | 19 |
2 files changed, 20 insertions, 18 deletions
diff --git a/desktop/scripts/unopkg.sh b/desktop/scripts/unopkg.sh index ca1e3bc7f444..18d0a7346e01 100755 --- a/desktop/scripts/unopkg.sh +++ b/desktop/scripts/unopkg.sh @@ -49,8 +49,6 @@ AIX) ;; esac -help_mode=0 -isnotuser=0 for arg in $@ do case "$arg" in @@ -59,25 +57,10 @@ do -env:*) BOOTSTRAPVARS=$BOOTSTRAPVARS" ""$arg";; # make sure shared extensions will be readable by all users - --shared) - umask 0022 - isnotuser=1 - ;; - - --bundled) isnotuser=1;; - -h|--help) help_mode=1;; + --shared) umask 0022;; esac done -# we don't really want root to run unopkg without --shared or --bundled option -# but we might at least let him read help -if [ "$(id -u)" -eq "0" ]; then - if [ $isnotuser -eq 0 ] && [ $help_mode -eq 0 ]; then - echo "Cannot run '${0} $*' as root without --shared or --bundled option." - exit 1 - fi -fi - # extend the ld_library_path for java: javaldx checks the sofficerc for us if [ -x "${sd_prog}/javaldx" ] ; then my_path=`"${sd_prog}/javaldx" $BOOTSTRAPVARS \ diff --git a/desktop/source/pkgchk/unopkg/unopkg_app.cxx b/desktop/source/pkgchk/unopkg/unopkg_app.cxx index b1330daec5d9..dc79adce6534 100644 --- a/desktop/source/pkgchk/unopkg/unopkg_app.cxx +++ b/desktop/source/pkgchk/unopkg/unopkg_app.cxx @@ -42,6 +42,9 @@ #include <com/sun/star/ui/dialogs/XDialogClosedListener.hpp> #include <com/sun/star/bridge/BridgeFactory.hpp> #include <stdio.h> +#if defined(UNX) + #include <unistd.h> +#endif #include <vector> @@ -186,6 +189,7 @@ extern "C" int unopkg_main() bool option_verbose = false; bool option_bundled = false; bool option_suppressLicense = false; + bool option_help = false; bool subcmd_gui = false; OUString logFile; OUString repository; @@ -252,6 +256,7 @@ extern "C" int unopkg_main() !readOption( &option_force, info_force, &nPos ) && !readOption( &option_bundled, info_bundled, &nPos ) && !readOption( &option_suppressLicense, info_suppressLicense, &nPos ) && + !readOption( &option_help, info_help, &nPos ) && !readArgument( &repository, info_context, &nPos ) && !isBootstrapVariable(&nPos)) { @@ -304,6 +309,20 @@ extern "C" int unopkg_main() toString( info_shared ) + "!\n" ); } } +#if defined(UNX) + if ( geteuid() == 0 ) + { + if ( !(option_shared || option_bundled || option_help) ) + { + dp_misc::writeConsoleError( + "ERROR: cannot run " APP_NAME " as root without " + + toString( info_shared ) + " or " + toString( info_bundled ) + + " option.\n"); + return 1; + } + + } +#endif if (subCommand == "reinstall") { |