summaryrefslogtreecommitdiff
path: root/perl/Wallet/Object/Keytab.pm
diff options
context:
space:
mode:
authorJon Robertson <jonrober@stanford.edu>2010-01-26 11:19:01 -0800
committerJon Robertson <jonrober@stanford.edu>2010-01-26 11:19:01 -0800
commit364f19c6200dfa7e96e5236a538b4092154b28e8 (patch)
tree9850515ad1ef18389daa6d4d856514bf0202b525 /perl/Wallet/Object/Keytab.pm
parent9347a25fdb92bae16a205da218fa153279765fbc (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.pm15
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};