[pve-devel] r5525 - in pve-access-control/trunk: . PVE
svn-commits at proxmox.com
svn-commits at proxmox.com
Tue Feb 15 12:07:34 CET 2011
Author: dietmar
Date: 2011-02-15 12:07:34 +0100 (Tue, 15 Feb 2011)
New Revision: 5525
Modified:
pve-access-control/trunk/ChangeLog
pve-access-control/trunk/PVE/ACLCache.pm
pve-access-control/trunk/PVE/AccessControl.pm
Log:
Modified: pve-access-control/trunk/ChangeLog
===================================================================
--- pve-access-control/trunk/ChangeLog 2011-02-15 10:20:29 UTC (rev 5524)
+++ pve-access-control/trunk/ChangeLog 2011-02-15 11:07:34 UTC (rev 5525)
@@ -1,5 +1,8 @@
2011-02-15 Proxmox Support Team <support at proxmox.com>
+ * PVE/AccessControl.pm (verify_username): restrict user names to
+ 64 charachters.
+
* PVE/ACLCache.pm: move code into new file.
* test/perm-test1.pl: modified to use new PVE::ACLCache class.
Modified: pve-access-control/trunk/PVE/ACLCache.pm
===================================================================
--- pve-access-control/trunk/PVE/ACLCache.pm 2011-02-15 10:20:29 UTC (rev 5524)
+++ pve-access-control/trunk/PVE/ACLCache.pm 2011-02-15 11:07:34 UTC (rev 5525)
@@ -17,7 +17,7 @@
return $self;
}
-sub compile {
+my $compile_acl = sub {
my ($self, $user) = @_;
if ($user eq 'root') { # root can do anything
@@ -43,17 +43,20 @@
}
return $res;
-}
+};
sub permissions {
my ($self, $user, $path) = @_;
+ $user = PVE::AccessControl::verify_username($user, 1);
+ return {} if !$user;
+
my $cache = $self->{cache};
my $acl = $cache->{$user};
if (!$acl) {
- $acl = $cache->{$user} = $self->compile($user);
+ $acl = $cache->{$user} = &$compile_acl($self, $user);
}
my $perm;
@@ -85,4 +88,11 @@
return 1;
};
+sub user_enabled {
+ my ($self, $user) = @_;
+
+ my $cfg = $self->{cfg};
+ return PVE::AccessControl::user_enabled($cfg, $user);
+}
+
1;
Modified: pve-access-control/trunk/PVE/AccessControl.pm
===================================================================
--- pve-access-control/trunk/PVE/AccessControl.pm 2011-02-15 10:20:29 UTC (rev 5524)
+++ pve-access-control/trunk/PVE/AccessControl.pm 2011-02-15 11:07:34 UTC (rev 5525)
@@ -298,7 +298,8 @@
sub user_enabled {
my ($usercfg, $username) = @_;
- return undef if !verify_username($username, 1);
+ $username = verify_username($username, 1);
+ return undef if !$username;
return 1 if $usercfg && $usercfg->{users}->{$username} &&
$usercfg->{users}->{$username}->{enabled};
@@ -520,10 +521,15 @@
my ($username, $noerr) = @_;
$username = '' if !$username;
- if (length($username) < 3) {
+ my $len = length($username);
+ if ($len < 3) {
die "user name '$username' is too short\n" if !$noerr;
return undef;
}
+ if ($len > 64) {
+ die "user name '$username' is too long ($len > 64)\n" if !$noerr;
+ return undef;
+ }
$username =~ s/root\@localhost/root/;
@@ -1023,6 +1029,9 @@
sub permission {
my ($cfg, $user, $path) = @_;
+ $user = verify_username($user, 1);
+ return {} if !$user;
+
my @ra = roles($cfg, $user, $path);
my $privs = {};
More information about the pve-devel
mailing list