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/Keytab.pm | |
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/Keytab.pm')
-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}; |