diff options
| author | Jon Robertson <jonrober@stanford.edu> | 2010-01-26 11:19:01 -0800 | 
|---|---|---|
| committer | Jon Robertson <jonrober@stanford.edu> | 2010-01-26 11:19:01 -0800 | 
| commit | 364f19c6200dfa7e96e5236a538b4092154b28e8 (patch) | |
| tree | 9850515ad1ef18389daa6d4d856514bf0202b525 /perl/Wallet/Object | |
| parent | 9347a25fdb92bae16a205da218fa153279765fbc (diff) | |
Improved error handling for Kadmin sub-modules
Improved error handling by adding an error function to the Kadmin sub-modules
which will copy errors down to the Wallet::Object::Keytab error function
rather than relying on too many dies and evals.  There still needs to be more
cleanup here, but that will rely on work on Heimdal::Kadm5 as well, to clean
up its own error handling to not spam warnings when called without RaiseError.
Also caught a few more un-evaled error cases where Heimdal::Kadm5 was called,
and fixed an error where RaiseErrors was being set rather than RaiseError due
to an error in Heimdal::Kadm5 docs.
Diffstat (limited to 'perl/Wallet/Object')
| -rw-r--r-- | perl/Wallet/Object/Keytab.pm | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/perl/Wallet/Object/Keytab.pm b/perl/Wallet/Object/Keytab.pm index 092e973..6733cf0 100644 --- a/perl/Wallet/Object/Keytab.pm +++ b/perl/Wallet/Object/Keytab.pm @@ -484,7 +484,9 @@ sub create {      bless $self, $class;      my $kadmin = Wallet::Kadmin->new ();      $self->{kadmin} = $kadmin; -    $kadmin->addprinc ($name); +    if (not $kadmin->addprinc ($name)) { +        die $kadmin->error; +    }          $self = $class->SUPER::create ($type, $name, $dbh, $creator, $host, $time);      $self->{kadmin} = $kadmin;      return $self; @@ -517,7 +519,10 @@ sub destroy {          return;      }      my $kadmin = $self->{kadmin}; -    return if not $kadmin->delprinc ($self->{name}); +    if (not $kadmin->delprinc ($self->{name})) { +        $self->error ($kadmin->error); +        return; +    }      return $self->SUPER::destroy ($user, $host, $time);  } @@ -546,12 +551,10 @@ sub get {      unlink $file;      my @enctypes = $self->attr ('enctypes');      my $kadmin = $self->{kadmin}; -    my $retval = eval { $kadmin->ktadd ($self->{name}, $file, @enctypes) }; -    if ($@) { -        $self->error ($@); +    if (not $kadmin->ktadd ($self->{name}, $file, @enctypes)) { +        $self->error ($kadmin->error);          return;      } -    return unless $retval;      local *KEYTAB;      unless (open (KEYTAB, '<', $file)) {          my $princ = $self->{name};  | 
