diff options
Diffstat (limited to 'src/lib/krb5/krb/t_walk_rtree.c')
| -rw-r--r-- | src/lib/krb5/krb/t_walk_rtree.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/t_walk_rtree.c b/src/lib/krb5/krb/t_walk_rtree.c new file mode 100644 index 0000000000000..09e71af0feed7 --- /dev/null +++ b/src/lib/krb5/krb/t_walk_rtree.c @@ -0,0 +1,58 @@ +/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +/* + * t_walk_rtree.c --- test krb5_walk_realm_tree + */ + +#include "k5-int.h" +#include <stdio.h> +#include "com_err.h" + +int +main(int argc, char **argv) +{ + krb5_data client, server; + char realm_branch_char = '.'; + krb5_principal *tree, *p; + char *name; + krb5_error_code retval; + krb5_context context; + + krb5_init_context(&context); + + if (argc < 3 || argc > 4) { + fprintf(stderr, + "Usage: %s client-realm server-realm [sep_char]\n", + argv[0]); + exit(99); + } + client.data = argv[1]; + client.length = strlen(client.data); + + server.data = argv[2]; + server.length = strlen(server.data); + + if (argc == 4) + realm_branch_char = argv[3][0]; + + retval = krb5_walk_realm_tree(context, &client, &server, &tree, + realm_branch_char); + if (retval) { + com_err("krb5_walk_realm_tree", retval, " "); + exit(1); + } + + for (p = tree; *p; p++) { + retval = krb5_unparse_name(context, *p, &name); + if (retval) { + com_err("krb5_unprase_name", retval, " "); + exit(2); + } + printf("%s\n", name); + free(name); + } + + krb5_free_realm_tree(context, tree); + krb5_free_context(context); + + exit(0); +} |
