#!/afs/athena/contrib/perl/p # # $Id: do-test.pl 17357 2005-08-25 22:04:59Z tlyu $ # $debug = $ARGV[1] || $ENV{'VERBOSE_TEST'}; die "Need a number.\n" if !$ARGV[0]; die "Neither \$TOP nor \$TESTDIR is set.\n" if (! ($ENV{'TOP'} || $ENV{'TESTDIR'})); $TESTDIR = ($ENV{'TESTDIR'} || "$ENV{'TOP'}/testing"); $INITDB = ($ENV{'INITDB'} || "$TESTDIR/scripts/init_db"); for ($i=0; $i<$ARGV[0]; $i++) { print "Trial $i\n" if $debug; system("$INITDB > /dev/null 2>&1") && die "Error in init_db\n"; open(KEYS,"../dbutil/kdb5_util -R dump_db|") || die "Couldn't run kdb5_util: $!\n"; chop($header = ); if ($header ne "kdb5_util load_dump version 4") { die "Cannot operate on dump version \"$header\"; version 4 required."; } while() { next if ((!/^princ.*kadmin\//) && (!/^princ.*krbtgt/)); print if $debug > 1; split; $princ = $_[6]; $nkeys = $_[4]; $ntls = $_[3]; print "$princ: nkeys $nkeys, ntls $ntls\n" if $debug; for ($j = 15 + $ntls*3; $nkeys > 0; $nkeys--) { $ver = $_[$j++]; $kvno = $_[$j++]; $keytype = $_[$j++]; $keylen = $_[$j++]; $keydata = $_[$j++]; $j += 3 if ($ver > 1); print "$princ, ver $ver, kvno $kvno, type $keytype, len $keylen, " . "data $keydata\n" if $debug; die "Duplicated key $princ = $keydata\n" if $keys{$keydata}++; } } close(KEYS); }