* api.0/chpass-principal.exp:
[krb5.git] / src / lib / kadm5 / unit-test / api.0 / init.exp
1 load_lib lib.t
2
3 # Assumptions:
4
5 # Principal "admin" exists, with "get", "add", "modify" and "delete"
6 #   access bits and password "admin".
7 # The string "not-the-password" isn't the password of any user in the database.
8 # Database master password is "mrroot".
9
10 api_exit
11 api_start
12 test "init 1"
13
14 one_line_fail_test_nochk \
15         {ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE "" \
16          $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 server_handle}
17
18 test "init 2"
19
20 one_line_fail_test_nochk \
21         {ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE @ \
22          $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 server_handle}
23
24 test "init 2.5"
25
26 one_line_fail_test_nochk \
27         {ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE BAD.REALM \
28          $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 server_handle}
29
30 test "init 3"
31
32 proc test3 {} {
33     global test
34     if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} {
35         error_and_restart "$test: couldn't create principal \"$test/a\""
36         return
37     }
38     one_line_fail_test_nochk [format {
39         ovsec_kadm_init admin admin "%s/a" null $OVSEC_KADM_STRUCT_VERSION \
40                 $OVSEC_KADM_API_VERSION_1 server_handle
41     } $test]
42 }
43 if {$RPC} { test3 }
44
45 test "init 4"
46
47 proc test4 {} {
48     global test
49         if {! ((! [principal_exists "$test/a"]) || 
50          [delete_principal "$test/a"])} {
51                 error_and_restart "$test: couldn't delete principal \"$test/a\""
52                 return
53         }
54                 
55         one_line_fail_test_nochk [format {
56             ovsec_kadm_init admin admin "%s/a" null \
57                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
58                     server_handle
59         } $test]
60 }
61 if {$RPC} { test4 }
62
63 test "init 5"
64
65 if {$RPC} {
66     one_line_fail_test_nochk {
67         ovsec_kadm_init admin admin admin null $OVSEC_KADM_STRUCT_VERSION \
68                 $OVSEC_KADM_API_VERSION_1 server_handle
69     }
70 }
71
72 test "init 6"
73
74 proc test6 {} {
75     global test
76
77     send "ovsec_kadm_init admin null \$OVSEC_KADM_ADMIN_SERVICE null \$OVSEC_KADM_STRUCT_VERSION \$OVSEC_KADM_API_VERSION_1 server_handle\n"
78
79     expect {
80         {Enter password:} { }
81         eof {
82                 fail "$test: eof instead of password prompt"
83                 api_exit
84                 api_start
85                 return
86         }
87         timeout {
88             fail "$test: timeout instead of password prompt"
89             return
90         }
91     }
92     one_line_succeed_test "admin"
93     if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
94         error_and_restart "$test: couldn't close database"
95     }
96 }
97 if { $RPC } { test6 } 
98
99 test "init 7"
100 proc test7 {} {
101     global test
102
103     send "ovsec_kadm_init admin \"\" \$OVSEC_KADM_ADMIN_SERVICE null \$OVSEC_KADM_STRUCT_VERSION \$OVSEC_KADM_API_VERSION_1 server_handle\n"
104
105     expect {
106         {Enter password:} { }
107         -re "key:$" { }
108         eof {
109                 fail "$test: eof instead of password prompt"
110                 api_exit
111                 api_start
112                 return
113         }
114         timeout {
115             fail "$test: timeout instead of password prompt"
116             return
117         }
118     }
119     one_line_succeed_test "admin"
120     if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
121         error_and_restart "$test: couldn't close database"
122     }
123 }
124 if { $RPC } { test7 } 
125
126 test "init 8"
127
128 proc test8 {} {
129     global test
130         if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} {
131                 error_and_restart "$test: couldn't create principal \"$test/a\""
132                 return
133         }
134         one_line_fail_test_nochk [format {
135             ovsec_kadm_init "%s/a" admin $OVSEC_KADM_ADMIN_SERVICE null \
136                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
137                     server_handle
138         } $test]
139 }
140 if {$RPC} { test8 }
141
142 test "init 9"
143
144 if {$RPC} {
145     global test
146   one_line_fail_test_nochk {
147       ovsec_kadm_init admin not-the-password $OVSEC_KADM_ADMIN_SERVICE null \
148               $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
149               server_handle
150   }
151 }
152
153 test "init 10"
154
155 proc test10 {} {
156         global test
157 #       set prms_id 562
158 #       setup_xfail {*-*-*} $prms_id
159         one_line_fail_test_nochk {
160             ovsec_kadm_init null admin $OVSEC_KADM_ADMIN_SERVICE null \
161                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
162                     server_handle
163         }
164 }
165 test10
166
167 #test "init 11"
168 #
169 #proc test11 {} {
170 #       global test
171 #       set prms_id 563
172 #       setup_xfail {*-*-*} $prms_id
173 #       one_line_fail_test_nochk {
174 #           ovsec_kadm_init "" admin $OVSEC_KADM_ADMIN_SERVICE null \
175 #                   $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
176 #                   server_handle
177 #       }
178 #}
179 #test11
180
181 test "init 12"
182
183 proc test12 {} {
184         global test
185     one_line_fail_test_nochk [format {
186         ovsec_kadm_init "%s/a" admin $OVSEC_KADM_ADMIN_SERVICE null \
187                 $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
188                 server_handle
189     } $test]
190 }
191 if {$RPC} { test12 }
192
193 test "init 13"
194
195 proc test13 {} {
196         global test
197     one_line_fail_test_nochk [format {
198         ovsec_kadm_init "%s/a@SECURE-TEST.OV.COM" admin \
199                 $OVSEC_KADM_ADMIN_SERVICE null $OVSEC_KADM_STRUCT_VERSION \
200                 $OVSEC_KADM_API_VERSION_1 server_handle
201     } $test]
202 }
203 if {$RPC} { test13 }
204
205 test "init 14"
206
207 proc test14 {} {
208         global test
209     one_line_fail_test_nochk [format {
210         ovsec_kadm_init "%s/a@BAD.REALM" admin $OVSEC_KADM_ADMIN_SERVICE null \
211                 $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
212                 server_handle
213     } $test]
214 }
215 if {$RPC} { test14 }
216
217 test "init 15"
218
219 if {$RPC} {
220     one_line_fail_test_nochk {
221         ovsec_kadm_init admin@BAD.REALM admin $OVSEC_KADM_ADMIN_SERVICE null \
222                 $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
223                 server_handle
224     }
225 }
226
227 test "init 16"
228
229 proc test16 {} {
230         global test
231         one_line_succeed_test {
232             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
233                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
234                     server_handle
235         }
236         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
237                 error_and_restart "$test: couldn't close database"
238         }
239 }
240 test16
241
242 test "init 17"
243
244 proc test17 {} {
245         global test
246         one_line_succeed_test {
247             ovsec_kadm_init admin@SECURE-TEST.OV.COM admin \
248                     $OVSEC_KADM_ADMIN_SERVICE null $OVSEC_KADM_STRUCT_VERSION \
249                     $OVSEC_KADM_API_VERSION_1 server_handle
250         }
251         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
252                 error_and_restart "$test: couldn't close database"
253         }
254 }
255 test17
256
257 test "init 18"
258
259 proc test18 {} {
260         global test
261         one_line_succeed_test {
262             ovsec_kadm_init admin admin $OVSEC_KADM_CHANGEPW_SERVICE null \
263                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
264                     server_handle
265         }
266         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
267                 error_and_restart "$test: couldn't close database"
268         }
269 }
270 test18
271
272 test "init 19"
273
274 proc test19 {} {
275         global test
276         one_line_succeed_test {
277             ovsec_kadm_init admin@SECURE-TEST.OV.COM admin \
278                     $OVSEC_KADM_ADMIN_SERVICE SECURE-TEST.OV.COM \
279                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
280                     server_handle
281         }
282         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
283                 error_and_restart "$test: couldn't close database"
284         }
285 }
286 test19
287
288 test "init 20"
289
290 proc test20 {} {
291         global test
292   if {! [cmd {
293       ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
294               $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
295               server_handle
296   }]} {
297                 error_and_restart "$test: couldn't init database"
298                 return
299         }
300         one_line_succeed_test \
301                 {ovsec_kadm_get_principal $server_handle admin principal}
302         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
303                 error_and_restart "$test: couldn't close database"
304         }
305 }
306 test20
307
308 #test "init 21"
309 #
310 #proc test21 {} {
311 #    global test
312 #    if {! [cmd {
313 #       ovsec_kadm_init admin admin $OVSEC_KADM_CHANGEPW_SERVICE null \
314 #               $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
315 #               server_handle
316 #    }]} {
317 #       error_and_restart "$test: couldn't init database"
318 #       return
319 #    }
320 #    one_line_fail_test_nochk {
321 #       ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
322 #               $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
323 #               server_handle
324 #    }
325 #    if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
326 #       error_and_restart "$test: couldn't close database"
327 #    }
328 #}
329 #test21
330
331
332 proc test22 {} {
333         global test prompt
334         set prompting 0
335         send [string trim {
336             ovsec_kadm_init admin null null null $OVSEC_KADM_STRUCT_VERSION \
337                     $OVSEC_KADM_API_VERSION_1 server_handle
338         }]
339         send "\n"
340         expect {
341             -re ":$" { set prompting 1}
342             -re "\nOK .*$prompt$" { fail "$test: premature success" }
343             -re "\nERROR .*$prompt$" { fail "$test: premature failure" }
344                 timeout { fail "$test: timeout" }
345                 eof { fail "$test: eof" }
346         }
347         if {$prompting} {
348             one_line_succeed_test mrroot
349         }
350         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
351             error_and_restart "$test: couldn't close database"
352         }
353 }
354 if {! $RPC} { test22 }
355
356 test "init 22.5"
357 proc test225 {} {
358         global test prompt
359         set prompting 0
360         send [string trim {
361             ovsec_kadm_init admin null null null $OVSEC_KADM_STRUCT_VERSION \
362                     $OVSEC_KADM_API_VERSION_1 server_handle
363         }]
364         send "\n"
365         expect {
366             -re ":$" { set prompting 1}
367             -re "\nOK .*$prompt$" { fail "$test: premature success" }
368             -re "\nERROR .*$prompt$" { fail "$test: premature failure" }
369                 timeout { fail "$test: timeout" }
370                 eof { fail "$test: eof" }
371         }
372         if {$prompting} {
373             one_line_succeed_test mrroot
374         }
375         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
376             error_and_restart "$test: couldn't close database"
377         }
378 }
379 if {! $RPC} { test225 }
380
381 test "init 23"
382
383 proc test23 {} {
384         global test
385         one_line_succeed_test {
386             ovsec_kadm_init admin not-the-password $OVSEC_KADM_ADMIN_SERVICE \
387                     null $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
388                     server_handle
389         }
390         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
391                 error_and_restart "$test: couldn't close database"
392         }
393 }
394 if {! $RPC} { test23 }
395
396 test "init 24"
397
398 proc test24 {} {
399         global test
400         one_line_succeed_test {
401             ovsec_kadm_init admin admin null null $OVSEC_KADM_STRUCT_VERSION \
402                     $OVSEC_KADM_API_VERSION_1 server_handle
403         }
404         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
405                 error_and_restart "$test: couldn't close database"
406         }
407 }
408 if {! $RPC} { test24 }
409
410 test "init 25"
411
412 proc test25 {} {
413         global test
414         one_line_succeed_test {
415             ovsec_kadm_init admin admin foobar null \
416                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
417                     server_handle
418         }
419         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
420                 error_and_restart "$test: couldn't close database"
421         }
422 }
423 if {! $RPC} { test25 }
424
425 test "init 26"
426
427 #proc test26 {} {
428 #       global test
429 #
430 #       api_exit
431 #       api_start
432 #       one_line_fail_test_nochk {
433 #           ovsec_kadm_get_principal $server_handle admin principal
434 #       }
435 #}
436 #test26
437
438 #test "init 27"
439 #
440 #proc test27 {} {
441 #       global test
442 #
443 #       if {! ((! [principal_exists "$test/a"]) || [delete_principal "$test/a"])} {
444 #               error_and_restart "$test: couldn't delete principal \"$test/a\""
445 #               return
446 #       }
447 #       begin_dump
448 #       if {[cmd [format {
449 #           ovsec_kadm_create_principal $server_handle [simple_principal \
450 #                   "%s/a"] {OVSEC_KADM_PRINCIPAL} "%s/a"
451 #       } $test $test]]} {
452 #               fail "$test: unexpected success in add"
453 #               return
454 #       }
455 #       end_dump_compare "no-diffs"
456 #}
457 #test27
458
459 #test "init 28"
460 #
461 #proc test28 {} {
462 #    global test prompt
463 #
464 #    if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} {
465 #       error_and_restart "$test: couldn't create principal \"$test/a\""
466 #       return
467 #    }
468 #    begin_dump
469 #    if {! ([cmd {
470 #       ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
471 #               $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
472 #               server_handle
473 #    }] && [cmd [format {
474 #       ovsec_kadm_get_principal $server_handle "%s/a" principal
475 #    } $test]])} {
476 #       error_and_restart "$test: error getting principal"
477 #       return;
478 #    }
479 #    send "lindex \$principal 8\n"
480 #    expect {
481 #       -re "\n(\[0-9\]+).*$prompt$" {set kvno $expect_out(1,string) }
482 #       timeout {
483 #           error_and_restart "$test: timeout getting principal kvno"
484 #           return
485 #       }
486 #       eof {
487 #           error_and_restart "$test: eof getting principal kvno"
488 #           return
489 #       }
490 #    }
491 #    api_exit
492 #    api_start
493 #    set new_kvno [expr "$kvno + 1"]
494 #    if {[cmd [format {
495 #       ovsec_kadm_modify_principal $server_handle \
496 #               {"%s/a" 0 0 0 0 0 0 0 %d 0 0 0} {OVSEC_KADM_KVNO}
497 #    } $test $new_kvno]]} {
498 #       fail "$test: unexpected success in modify"
499 #       return;
500 #    }
501 #    end_dump_compare "no-diffs"
502 #}
503 #test28
504
505 #test "init 29"
506 #
507 #proc test29 {} {
508 #    global test
509 #
510 #    if {! ([principal_exists "$test/a"] || [create_principal "$test/a"])} {
511 #       error_and_restart "$test: couldn't create principal \"$test/a\""
512 #       return
513 #    }
514 #    begin_dump
515 #    if {[cmd [format {
516 #       ovsec_kadm_delete_principal $server_handle "%s/a"
517 #    } $test]]} {
518 #       fail "$test: unexpected success in delete"
519 #       return
520 #    }
521 #    end_dump_compare "no-diffs"
522 #}
523 #test29
524
525 test "init 30"
526 proc test30 {} {
527         global test
528         if {[cmd {
529             ovsec_kadm_init admin foobar $OVSEC_KADM_ADMIN_SERVICE null \
530                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
531                     server_handle
532         }]} {
533                 error_and_restart "$test: unexpected success"
534                 return
535         }
536         one_line_succeed_test {
537             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
538                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
539                     server_handle
540         }
541         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
542                 error_and_restart "$test: couldn't close database"
543         }
544 }
545 if ${RPC} { test30 }
546
547 test "init 31"
548 proc test31 {} {
549         global test
550         one_line_fail_test {
551             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
552                     $bad_struct_version_mask $OVSEC_KADM_API_VERSION_1 \
553                     server_handle
554         } "BAD_STRUCT_VERSION" 
555 }
556 test31
557
558 test "init 32"
559 proc test32 {} {
560         global test
561         one_line_fail_test {
562             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
563                     $no_struct_version_mask $OVSEC_KADM_API_VERSION_1 \
564                     server_handle
565         } "BAD_STRUCT_VERSION" 
566 }
567 test32
568
569 test "init 33"
570 proc test33 {} {
571         global test
572         one_line_fail_test {
573             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
574                     $old_struct_version $OVSEC_KADM_API_VERSION_1 \
575                     server_handle
576         } "OLD_STRUCT_VERSION" 
577 }
578 test33
579
580 test "init 34"
581 proc test34 {} {
582         global test
583         one_line_fail_test {
584             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
585                     $new_struct_version $OVSEC_KADM_API_VERSION_1 \
586                     server_handle
587         } "NEW_STRUCT_VERSION" 
588 }
589 test34
590
591 test "init 35"
592 proc test35 {} {
593         global test
594         one_line_fail_test {
595             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
596                     $OVSEC_KADM_STRUCT_VERSION $bad_api_version_mask \
597                     server_handle
598         } "BAD_API_VERSION" 
599 }
600 test35
601
602 test "init 36"
603 proc test36 {} {
604         global test
605         one_line_fail_test {
606             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
607                     $OVSEC_KADM_STRUCT_VERSION $no_api_version_mask \
608                     server_handle
609         } "BAD_API_VERSION" 
610 }
611 test36
612
613 test "init 37"
614 proc test37 {} {
615         global test
616         one_line_fail_test {
617             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
618                     $OVSEC_KADM_STRUCT_VERSION $old_api_version \
619                     server_handle
620         } "OLD_LIB_API_VERSION" 
621 }
622 if { $RPC } test37
623
624 test "init 38"
625 proc test38 {} {
626         global test
627         one_line_fail_test {
628             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
629                     $OVSEC_KADM_STRUCT_VERSION $old_api_version \
630                     server_handle
631         } "OLD_SERVER_API_VERSION" 
632 }
633 if { ! $RPC } test38
634
635 test "init 39"
636 proc test39 {} {
637         global test
638         one_line_fail_test {
639             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
640                     $OVSEC_KADM_STRUCT_VERSION $new_api_version \
641                     server_handle
642         } "NEW_LIB_API_VERSION" 
643 }
644 if { $RPC } test39
645
646 test "init 40"
647 proc test40 {} {
648         global test
649         one_line_fail_test {
650             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
651                     $OVSEC_KADM_STRUCT_VERSION $new_api_version \
652                     server_handle
653         } "NEW_SERVER_API_VERSION" 
654 }
655 if { ! $RPC } test40
656
657 test "init 41"
658 proc test41 {} {
659         global test
660         one_line_fail_test {
661             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
662                     $OVSEC_KADM_API_VERSION_1 $OVSEC_KADM_STRUCT_VERSION \
663                     server_handle
664         } "BAD_"
665 }
666 test41
667
668 test "init 42"
669 proc test42 {} {
670         global test
671         one_line_succeed_test {
672             ovsec_kadm_init admin admin $OVSEC_KADM_ADMIN_SERVICE null \
673                     $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
674                     server_handle
675         }
676         if {! [cmd {ovsec_kadm_destroy $server_handle}]} {
677                 error_and_restart "$test: couldn't close database"
678         }
679 }
680 test42
681
682
683 proc test45_46 {service} {
684     global test kadmin_local env
685
686     spawn $kadmin_local -q "delprinc -force $service"
687     expect {
688         -re "Principal .* deleted." {}
689         default {
690             perror "kadmin.local delprinc failed\n";
691         }
692     }
693     expect eof
694     wait
695
696     one_line_fail_test [concat {ovsec_kadm_init admin admin } \
697             $service \
698             { null $OVSEC_KADM_STRUCT_VERSION $OVSEC_KADM_API_VERSION_1 \
699             server_handle}] "SECURE_PRINC_MISSING"
700
701     # this leaves the keytab with an incorrect entry
702     spawn $kadmin_local -q "ank -randkey $service"
703     expect eof
704     wait
705
706     # restart the api so it gets a new ccache
707     api_exit
708     api_start
709 }
710
711 if {$RPC} {
712     test "init 45"
713
714     test45_46 ovsec_adm/admin
715
716     test "init 46"
717
718     test45_46 ovsec_adm/changepw
719
720     # re-extract the keytab so it is right
721     exec rm $env(K5ROOT)/ovsec_adm.srvtab
722     exec $env(MAKE_KEYTAB) -princ ovsec_adm/admin -princ ovsec_adm/changepw \
723             -princ kadmin/admin -princ kadmin/changepw \
724             $env(K5ROOT)/ovsec_adm.srvtab
725 }
726
727 return ""
728