summaryrefslogtreecommitdiff
path: root/perl/Wallet
diff options
context:
space:
mode:
authorRuss Allbery <rra@stanford.edu>2008-02-07 22:44:21 +0000
committerRuss Allbery <rra@stanford.edu>2008-02-07 22:44:21 +0000
commit4271fb73203556213af37d004fd8bc0206a6ab0e (patch)
tree58242e4d64adb29f642456c7e6dcb1165655fc23 /perl/Wallet
parentf5cb855d5a7190cded71bbc8343aebfa92337fea (diff)
The current version of Net::Remctl can't handle explicit undef or the
empty string as a principal argument. Be careful not to provide a principal argument if no principal was set. This workaround can be removed once we depend on a later version of Net::Remctl.
Diffstat (limited to 'perl/Wallet')
-rw-r--r--perl/Wallet/ACL/NetDB.pm18
-rw-r--r--perl/Wallet/Object/Keytab.pm4
2 files changed, 16 insertions, 6 deletions
diff --git a/perl/Wallet/ACL/NetDB.pm b/perl/Wallet/ACL/NetDB.pm
index ad706b3..cc7121b 100644
--- a/perl/Wallet/ACL/NetDB.pm
+++ b/perl/Wallet/ACL/NetDB.pm
@@ -24,7 +24,7 @@ use Wallet::Config;
# This version should be increased on any code change to this module. Always
# use two digits for the minor version with a leading zero if necessary so
# that it will sort properly.
-$VERSION = '0.02';
+$VERSION = '0.03';
##############################################################################
# Interface
@@ -46,10 +46,20 @@ sub new {
die "NetDB ACL support not available: $error\n";
}
local $ENV{KRB5CCNAME} = $Wallet::Config::NETDB_REMCTL_CACHE;
- my $port = $Wallet::Config::NETDB_REMCTL_PORT;
- my $principal = $Wallet::Config::NETDB_REMCTL_PRINCIPAL;
my $remctl = Net::Remctl->new;
- unless ($remctl->open ($host, $port, $principal)) {
+
+ # Net::Remctl 2.12 and later will support passing in an empty string for
+ # the principal. Until then, be careful not to pass principal unless it
+ # was specified.
+ my $port = $Wallet::Config::NETDB_REMCTL_PORT || 0;
+ my $principal = $Wallet::Config::NETDB_REMCTL_PRINCIPAL;
+ my $status;
+ if (defined $principal) {
+ $status = $remctl->open ($host, $port, $principal);
+ } else {
+ $status = $remctl->open ($host, $port);
+ }
+ unless ($status) {
die "cannot connect to NetDB remctl interface: ", $remctl->error, "\n";
}
my $self = { remctl => $remctl };
diff --git a/perl/Wallet/Object/Keytab.pm b/perl/Wallet/Object/Keytab.pm
index e2c21a4..34fa12d 100644
--- a/perl/Wallet/Object/Keytab.pm
+++ b/perl/Wallet/Object/Keytab.pm
@@ -511,8 +511,8 @@ sub keytab_retrieve {
$keytab .= '@' . $Wallet::Config::KEYTAB_REALM;
}
local $ENV{KRB5CCNAME} = $Wallet::Config::KEYTAB_REMCTL_CACHE;
- my $port = $Wallet::Config::KEYTAB_REMCTL_PORT;
- my $principal = $Wallet::Config::KEYTAB_REMCTL_PRINCIPAL;
+ my $port = $Wallet::Config::KEYTAB_REMCTL_PORT || 0;
+ my $principal = $Wallet::Config::KEYTAB_REMCTL_PRINCIPAL || '';
my @command = ('keytab', 'retrieve', $keytab);
my $result = Net::Remctl::remctl ($host, $port, $principal, @command);
if ($result->error) {