summaryrefslogtreecommitdiff
path: root/perl/Wallet/Object/Keytab.pm
diff options
context:
space:
mode:
authorRuss Allbery <rra@stanford.edu>2007-10-09 19:00:44 +0000
committerRuss Allbery <rra@stanford.edu>2007-10-09 19:00:44 +0000
commita292fd7f8ef6f5322bd1cabfbbd9955da0dbd1c8 (patch)
tree3dcc690131cbddd2f5d6fbae2962eaf059d62cca /perl/Wallet/Object/Keytab.pm
parent009de8debb0cbda0b74903d07b935e830fe2b0a1 (diff)
We have to check the validity of enctypes ourselves since SQLite doesn't
enforce referential integrity.
Diffstat (limited to 'perl/Wallet/Object/Keytab.pm')
-rw-r--r--perl/Wallet/Object/Keytab.pm9
1 files changed, 9 insertions, 0 deletions
diff --git a/perl/Wallet/Object/Keytab.pm b/perl/Wallet/Object/Keytab.pm
index 4727590..34eb171 100644
--- a/perl/Wallet/Object/Keytab.pm
+++ b/perl/Wallet/Object/Keytab.pm
@@ -425,7 +425,16 @@ sub enctypes_set {
$self->log_set ('type_data enctypes', $enctype, undef, @trace);
}
}
+
+ # When inserting new enctypes, we unfortunately have to do the
+ # consistency check against the enctypes table ourselves, since SQLite
+ # doesn't enforce integrity constraints.
for my $enctype (keys %enctypes) {
+ $sql = 'select en_name from enctypes where en_name = ?';
+ my $status = $self->{dbh}->selectrow_array ($sql, undef, $enctype);
+ unless ($status) {
+ die "unknown encryption type $enctype\n";
+ }
$sql = 'insert into keytab_enctypes (ke_name, ke_enctype) values
(?, ?)';
$self->{dbh}->do ($sql, undef, $name, $enctype);