diff options
| author | Russ Allbery <rra@stanford.edu> | 2007-12-07 00:51:07 +0000 | 
|---|---|---|
| committer | Russ Allbery <rra@stanford.edu> | 2007-12-07 00:51:07 +0000 | 
| commit | c2ca6dbc6caa51283a8fa587a622bcd870c97d93 (patch) | |
| tree | 47526cc3cc5ed78b52d128e1012aeb78f075112c | |
| parent | 2e9f1bbdab7ee4cbf9fba8b5c99cb3e970f35f4b (diff) | |
Check a default creation ACL first before the ADMIN ACL when deciding
whether we can auto-create a non-existent ACL, since creating one with
the ADMIN ACL doesn't create a useful object.
Allow @ in wallet-backend arguments so that principal names can be
passed in.
| -rw-r--r-- | NEWS | 7 | ||||
| -rw-r--r-- | perl/Wallet/Server.pm | 7 | ||||
| -rwxr-xr-x | server/wallet-backend | 2 | ||||
| -rw-r--r-- | tests/server/backend-t.in | 2 | 
4 files changed, 12 insertions, 6 deletions
| @@ -4,6 +4,9 @@ wallet 0.5 (unreleased)      Allow the empty string in wallet-backend arguments. +    Allow @ in wallet-backend arguments so that principal names can be +    passed in. +      Load the Perl modules for ACL verifiers and object types dynamically      now that we're reading the class from the database. @@ -18,6 +21,10 @@ wallet 0.5 (unreleased)      backup file before creating a new backup and don't fail if the backup      already exists. +    Check a default creation ACL first before the ADMIN ACL when deciding +    whether we can auto-create a non-existent ACL, since creating one with +    the ADMIN ACL doesn't create a useful object. +  wallet 0.4 (2007-12-05)      Maintain a global cache of ACL verifiers in Wallet::ACL and reuse them diff --git a/perl/Wallet/Server.pm b/perl/Wallet/Server.pm index f04c139..87a5bab 100644 --- a/perl/Wallet/Server.pm +++ b/perl/Wallet/Server.pm @@ -243,10 +243,9 @@ sub create {      my $dbh = $self->{dbh};      my $user = $self->{user};      my $host = $self->{host}; -    my $acl; -    unless ($self->{admin}->check ($user)) { -        $acl = $self->create_check ($type, $name); -        return unless $acl; +    my $acl = $self->create_check ($type, $name); +    unless ($acl) { +        return unless $self->{admin}->check ($user);      }      my $object = eval { $class->create ($type, $name, $dbh, $user, $host) };      if ($@) { diff --git a/server/wallet-backend b/server/wallet-backend index 4af7490..e32581c 100755 --- a/server/wallet-backend +++ b/server/wallet-backend @@ -120,7 +120,7 @@ sub check_args {      my %exclude = map { $_ => 1 } @$exclude;      for (my $i = 1; $i <= @args; $i++) {          next if $exclude{$i}; -        unless ($args[$i - 1] =~ m,^[\w_/.-]*\z,) { +        unless ($args[$i - 1] =~ m,^[\w_/\@.-]*\z,) {              error "invalid characters in argument: $args[$i - 1]";          }      } diff --git a/tests/server/backend-t.in b/tests/server/backend-t.in index 0c02598..ce4e30c 100644 --- a/tests/server/backend-t.in +++ b/tests/server/backend-t.in @@ -440,7 +440,7 @@ for my $command (sort keys %flag_commands) {  is ($err, '', 'Allowed the empty argument');  is ($OUTPUT, "command show type  from admin (1.2.3.4) succeeded\n",      ' and success logged'); -my $ok = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_/.-'; +my $ok = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_/.@-';  ($out, $err) = run_backend ('show', 'type', $ok);  is ($err, '', 'Allowed all valid characters');  is ($OUTPUT, "command show type $ok from admin (1.2.3.4) succeeded\n", | 
