From e242c4074653a8c4f1efef3de7fd195bef986671 Mon Sep 17 00:00:00 2001 From: Marco Molteni Date: Tue, 1 May 2012 23:01:19 +0200 Subject: [PATCH] Verify the existence of the keytab for tcp_server, gssapi_server appl/test/tcp_server and gssapi_server try to open the keytab file only when processing a connection. This patch verifies the existence of the keytab file on program startup, so that troubleshooting is easier. In addition it adds some comments. Signed-off-by: Love Hornquist Astrand --- appl/test/common.c | 16 +++++++++++----- appl/test/gssapi_server.c | 18 ++++++++++++------ appl/test/tcp_server.c | 7 +++++++ 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/appl/test/common.c b/appl/test/common.c index d4b9b71c5..1e00ad16a 100644 --- a/appl/test/common.c +++ b/appl/test/common.c @@ -115,12 +115,18 @@ server_setup(krb5_context *context, int argc, char **argv) if(argv[argc] != NULL) server_usage(1, args, num_args); - if (keytab_str != NULL) - ret = krb5_kt_resolve (*context, keytab_str, &keytab); - else - ret = krb5_kt_default (*context, &keytab); + if (keytab_str != NULL) { + ret = krb5_kt_resolve (*context, keytab_str, &keytab); + if (ret) + krb5_err (*context, 1, ret, "krb5_kt_resolve"); + } else { + ret = krb5_kt_default (*context, &keytab); + if (ret) + krb5_err (*context, 1, ret, "krb5_kt_default"); + } + ret = krb5_kt_have_content(*context, keytab); if (ret) - krb5_err (*context, 1, ret, "krb5_kt_resolve/default"); + krb5_err (*context, 1, ret, "krb5_kt_have_content"); return port; } diff --git a/appl/test/gssapi_server.c b/appl/test/gssapi_server.c index 0cb0823b1..44790730f 100644 --- a/appl/test/gssapi_server.c +++ b/appl/test/gssapi_server.c @@ -31,6 +31,10 @@ * SUCH DAMAGE. */ +/* + * A sample server that uses the GSSAPI. + */ + #include "test_locl.h" #include #include @@ -331,13 +335,12 @@ proto (int sock, const char *service) } } -static int -doit (int port, const char *service) +static void +loop (int port, const char *service) { int sock, sock2; struct sockaddr_in my_addr; int one = 1; - int ret; if (keytab_str) gsskrb5_register_acceptor_identity(keytab_str); @@ -366,16 +369,19 @@ doit (int port, const char *service) if (sock2 < 0) err (1, "accept"); - ret = proto (sock2, service); + proto (sock2, service); } - return ret; } +/* + * Iterative server; process one connection at a time. + */ int main(int argc, char **argv) { krb5_context context = NULL; /* XXX */ int port = server_setup(&context, argc, argv); - return doit (port, service); + loop (port, service); + return 0; } diff --git a/appl/test/tcp_server.c b/appl/test/tcp_server.c index 7da97e6aa..4959b4c1f 100644 --- a/appl/test/tcp_server.c +++ b/appl/test/tcp_server.c @@ -31,6 +31,10 @@ * SUCH DAMAGE. */ +/* + * A sample server that uses the Kerberos V5 API. + */ + #include "test_locl.h" RCSID("$Id$"); @@ -160,6 +164,9 @@ doit (int port, const char *service) return proto (STDIN_FILENO, service); } +/* + * Process only one connection and then exit. + */ int main(int argc, char **argv) {