aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2010-07-15 22:12:46 -0300
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2010-07-15 22:12:46 -0300
commitba26789c5bea9659c31ba304c21fc45a50584b5c (patch)
tree84acc648cc98694a708743929fa7fcf0f288c12b
parentremoved a poor debug from the main script (diff)
downloadg-octave-ba26789c5bea9659c31ba304c21fc45a50584b5c.tar.gz
g-octave-ba26789c5bea9659c31ba304c21fc45a50584b5c.tar.bz2
g-octave-ba26789c5bea9659c31ba304c21fc45a50584b5c.zip
added a security test, to check if the current user belongs to the user
group allowed to build packages of the current package manager.
-rw-r--r--g_octave/package_manager.py1
-rwxr-xr-xscripts/g-octave16
2 files changed, 16 insertions, 1 deletions
diff --git a/g_octave/package_manager.py b/g_octave/package_manager.py
index c7b600d..60f7472 100644
--- a/g_octave/package_manager.py
+++ b/g_octave/package_manager.py
@@ -111,6 +111,7 @@ class Portage(Base):
class Pkgcore(Base):
_client = 'pmerge'
+ _group = 'portage'
post_uninstall = [
'You may want to remove the dependencies too, using:',
diff --git a/scripts/g-octave b/scripts/g-octave
index 0eb8033..458d3db 100755
--- a/scripts/g-octave
+++ b/scripts/g-octave
@@ -36,6 +36,7 @@ except KeyboardInterrupt:
sys.exit(1)
+import getpass
import os
import optparse
import portage
@@ -192,6 +193,19 @@ def main():
out.eerror('Invalid package manager: %s' % conf_prefetch.package_manager)
return os.EX_CONFIG
+ # checking if the current user is allowed to run g-octave
+ current_user = getpass.getuser()
+ if current_user not in pkg_manager.allowed_users():
+ log.error(
+ 'The current user (%s) can\'t run the current selected '
+ 'package manager (%s)' % (current_user, conf_prefetch.package_manager)
+ )
+ out.eerror(
+ 'The current user (%s) can\'t run the current selected '
+ 'package manager (%s)' % (current_user, conf_prefetch.package_manager)
+ )
+ return os.EX_NOPERM
+
# checking if our overlay is correctly added to PORTDIR_OVERLAY
if not pkg_manager.check_overlay(conf_prefetch.overlay, out):
log.error('Overlay not properly configured.')
@@ -370,7 +384,7 @@ if __name__ == '__main__':
out.eerror('Unknown error - %s' % error)
return_code = os.EX_SOFTWARE
- if return_code not in [os.EX_OK, os.EX_CONFIG, os.EX_USAGE, os.EX_DATAERR]:
+ if return_code not in [os.EX_OK, os.EX_CONFIG, os.EX_USAGE, os.EX_DATAERR, os.EX_NOPERM]:
out.einfo('If you fell that this is a bug, please report to us.')
out.einfo(__issue_tracker)