[Libreoffice-commits] core.git: desktop/scripts desktop/source

Katarina Behrens Katarina.Behrens at cib.de
Fri Jun 19 07:00:33 PDT 2015


 desktop/scripts/unopkg.sh                   |   19 +------------------
 desktop/source/pkgchk/unopkg/unopkg_app.cxx |   19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 18 deletions(-)

New commits:
commit c15b96a4b9ad0c37e7848e8460732e7d088529e3
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date:   Thu Jun 18 17:00:55 2015 +0200

    C++ solution of 'unopkg can't be used by root'
    
    This way should cover all un*x-like OSes (unopkg.sh excludes
    e.g. OS X)
    This effectively reverts commits 723e099972c1645 and
    9444ffc93a3335
    
    Change-Id: I0b4425d1c9eff8e51e5d9a4dab35775084106a23
    (cherry picked from commit faa2c06226146e3ab4b7fa8096cf213ea9d52a23)

diff --git a/desktop/scripts/unopkg.sh b/desktop/scripts/unopkg.sh
index ca1e3bc..18d0a73 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 b1330da..dc79adc 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")
         {


More information about the Libreoffice-commits mailing list