From 1938e51baa37fc68dc423ab5c29f5ea9c2f58ab3 Mon Sep 17 00:00:00 2001 From: "jrayhawk+piny.be@omgwallhack.org" Date: Tue, 1 May 2012 22:04:04 -0700 Subject: Adding check for UID 0 to pinyadmin commands so root can actually do things --- pinyadmin/sbin/pinyconfig | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'pinyadmin/sbin/pinyconfig') diff --git a/pinyadmin/sbin/pinyconfig b/pinyadmin/sbin/pinyconfig index 345e53f..03531b1 100755 --- a/pinyadmin/sbin/pinyconfig +++ b/pinyadmin/sbin/pinyconfig @@ -11,12 +11,15 @@ if ( not defined $reponame ) { die "Usage: $0 reponame|--user [tweakable [value]]\n"; }; +my $repo; my $config; +my $env = Piny::Environment->instance( ); if ( $reponame eq "--user" ) { - $config = Piny::Environment->instance->user->config; + $config = $env->user->config; } else { - $config = Piny::Repo->new( $reponame )->config; + $repo = Piny::Repo->new( $reponame ); + $config = $repo->config; }; if ( not defined $attr ) { @@ -38,15 +41,22 @@ if ( not defined $attr ) { $attr =~ s/\./_/g; if ( defined $value ) { + if ( $env->user->uid != 0 and $repo->owner->uid != $env->user->uid ) { + print "You are not the owner of that repo!\n"; + exit( 3 ); + }; + undef $@; eval { $config->$attr( $value ); }; if ( $@ ) { print STDERR "$attr is not a legal tweakable, or $value is not a legal value for that tweakable.\n$@\n"; + exit( 4 ); }; if ( $value ne $config->$attr ) { print STDERR "Failed to set $attr (perhaps an override is in place)\n"; + exit( 5 ); }; }; @@ -56,6 +66,7 @@ if ( not defined $attr ) { }; if ( $@ ) { print STDERR "$attr is not a legal tweakable, or its current value is illegal.\n$@\n"; + exit( 6 ); }; }; -- cgit v1.2.3