blob: db09b895e586f70c992dac081a90c321b01025b5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# Standalone Kerberos test.
# This is a DejaGnu test script.
# This script tests that the Kerberos tools can talk to each other.
# This mostly just calls procedures in testsuite/config/default.exp.
# We are about to start up a couple of daemon processes. We do all
# the rest of the tests inside a proc, so that we can easily kill the
# processes when the procedure ends.
proc doit { } {
global REALMNAME
global KLIST
global KDESTROY
global KEY
global KADMIN_LOCAL
global KTUTIL
global hostname
global tmppwd
global spawn_id
global supported_enctypes
global KRBIV
global portbase
global mode
# Start up the kerberos and kadmind daemons.
if ![start_kerberos_daemons 1] {
return
}
# Use kadmin to add an host key.
if ![add_random_key host/$hostname 1] {
return
}
# Use ksrvutil to create a srvtab entry.
# if ![setup_srvtab 1] {
# return
# }
# Use kinit to get a ticket.
if ![kinit krbtest/admin adminpass$KEY 1] {
return
}
# Make sure that klist can see the ticket.
if ![do_klist "krbtest/admin@$REALMNAME" "krbtgt/$REALMNAME@$REALMNAME" "klist"] {
return
}
# Destroy the ticket.
spawn $KDESTROY -5
if ![check_exit_status "kdestroy"] {
return
}
pass "kdestroy"
set response {}
set got_response 0
set kdcsock ""
catch {
send_log "connecting to $hostname [expr 3 + $portbase]\n"
set kdcsock [socket $hostname [expr 3 + $portbase]]
fconfigure $kdcsock -encoding binary -blocking 0 -buffering none
puts -nonewline $kdcsock [binary format H* ffffffff]
# XXX
sleep 3
set response [read $kdcsock]
set got_response 1
} msg
if [string length $kdcsock] { catch "close $kdcsock" }
if $got_response {
# send_log [list sent length -1, got back $response]
# send_log "\n"
if [string length $response]>10 {
pass "too-long TCP request"
} else {
send_log "response too short\n"
fail "too-long TCP request"
}
} else {
send_log "too-long connect/exchange failure: $msg\n"
fail "too-long TCP request"
}
}
set status 0
run_once tcp {
# Set up the Kerberos files and environment.
set mode tcp
reset_kerberos_files
if {![get_hostname] || ![setup_kerberos_files] || ![setup_kerberos_env]} {
set mode udp
reset_kerberos_files
return
}
# Reset now, for next time we write the config files.
set mode udp
# Initialize the Kerberos database. The argument tells
# setup_kerberos_db that it is being called from here.
if ![setup_kerberos_db 1] {
reset_kerberos_files
return
}
set status [catch doit msg]
}
reset_kerberos_files
stop_kerberos_daemons
if { $status != 0 } {
send_error "ERROR: error in standalone.exp\n"
send_error "$msg\n"
exit 1
}
|