From b819da850761610623b47a216b2085f5e0e39c42 Mon Sep 17 00:00:00 2001 From: Theodore Tso Date: Mon, 24 Mar 1997 17:23:17 +0000 Subject: [PATCH] t_ser.c: Clean up error reporting for krb5_init_context(). Also report errors for each subtest, so we know which subtest failed. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@10023 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/krb5/krb/ChangeLog | 6 +++ src/lib/krb5/krb/t_ser.c | 105 ++++++++++++++++++++++++++----------- 2 files changed, 80 insertions(+), 31 deletions(-) diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog index 85bd7473a..2573b959c 100644 --- a/src/lib/krb5/krb/ChangeLog +++ b/src/lib/krb5/krb/ChangeLog @@ -1,3 +1,9 @@ +Mon Mar 24 12:21:38 1997 Theodore Ts'o + + * t_ser.c: Clean up error reporting for krb5_init_context(). Also + report errors for each subtest, so we know which subtest + failed. + Sat Feb 22 22:39:49 1997 Richard Basch * Makefile.in: Use some of the new library list build rules in diff --git a/src/lib/krb5/krb/t_ser.c b/src/lib/krb5/krb/t_ser.c index 5ad2f951e..f7b4cab38 100644 --- a/src/lib/krb5/krb/t_ser.c +++ b/src/lib/krb5/krb/t_ser.c @@ -26,8 +26,11 @@ * t_ser.c - Test serialization. */ #include "k5-int.h" +#include "com_err.h" #include "auth_con.h" +#include + static const char stuff[]="You can't take a pointer to a function and convert \ it to a pointer to char; ANSI doesn't say it'll work, and in fact on the HPPA \ you can lose some bits of the function pointer, and get a pointer that you \ @@ -82,10 +85,13 @@ ser_data(verbose, msg, ctx, dtype) krb5_pointer nctx; krb5_octet *outrep, *ibuf, *outrep2; size_t outlen, ilen, outlen2; - int i, j; /* Initialize context and initialize all Kerberos serializers */ - krb5_init_context(&ser_ctx); + if ((kret = krb5_init_context(&ser_ctx))) { + printf("Couldn't initialize krb5 library: %s\n", + error_message(kret)); + exit(1); + } krb5_ser_context_init(ser_ctx); krb5_ser_db_context_init(ser_ctx); krb5_ser_auth_context_init(ser_ctx); @@ -111,7 +117,8 @@ ser_data(verbose, msg, ctx, dtype) &ilen); if (!kret) { if (ilen) - printf("%s: %d bytes left over after internalize\n", ilen); + printf("%s: %d bytes left over after internalize\n", + msg, ilen); /* Now attempt to re-externalize it */ kret = krb5_externalize_data(ser_ctx, nctx, &outrep2, &outlen2); if (!kret) { @@ -408,7 +415,7 @@ ser_ccache_test(kcontext, verbose) sprintf(ccname, "STDIO:temp_cc_%d", getpid()); sprintf(princname, "xxx%d/i%d@this.is.a.test", getpid(), getpid()); - if (kret = krb5_cc_resolve(kcontext, ccname, &ccache)) + if ((kret = krb5_cc_resolve(kcontext, ccname, &ccache))) kret = krb5_cc_register(kcontext, &krb5_scc_ops, 1); if (!kret && !(kret = krb5_cc_resolve(kcontext, ccname, &ccache)) && @@ -454,7 +461,7 @@ ser_keytab_test(kcontext, verbose) (krb5_pointer) keytab, KV5M_KEYTAB)) && !(kret = krb5_kt_close(kcontext, keytab))) { sprintf(ccname, "WRFILE:temp_kt_%d", getpid()); - if (kret = krb5_kt_resolve(kcontext, ccname, &keytab)) + if ((kret = krb5_kt_resolve(kcontext, ccname, &keytab))) kret = krb5_kt_register(kcontext, &krb5_ktf_writable_ops); if (!kret && !(kret = krb5_kt_resolve(kcontext, ccname, &keytab)) && @@ -621,6 +628,7 @@ main(argc, argv) int verbose; int option; extern char *optarg; + char ch_err; kret = 0; verbose = 0; @@ -686,35 +694,70 @@ main(argc, argv) do_xtest = 1; break; default: - kret = EINVAL; + fprintf(stderr, + "%s: usage is %s [-acekprsxvACEKPRSX]\n", + argv[0], argv[0]); + exit(1); break; } } - if (!kret) { - if (!(kret = krb5_init_context(&kcontext))) { - if (!kret && do_xtest) - kret = ser_kcontext_test(kcontext, verbose); - if (!kret && do_atest) - kret = ser_acontext_test(kcontext, verbose); - if (!kret && do_ctest) - kret = ser_ccache_test(kcontext, verbose); - if (!kret && do_ktest) - kret = ser_keytab_test(kcontext, verbose); - if (!kret && do_rtest) - kret = ser_rcache_test(kcontext, verbose); - if (!kret && do_etest) - kret = ser_eblock_test(kcontext, verbose); - if (!kret && do_ptest) - kret = ser_princ_test(kcontext, verbose); - if (!kret && do_stest) - kret = ser_cksum_test(kcontext, verbose); - krb5_free_context(kcontext); - } + if ((kret = krb5_init_context(&kcontext))) { + com_err(argv[0], kret, "while initializing krb5"); + exit(1); } - else - printf("%s: usage is %s [-acekprsxvACEKPRSX]\n", argv[0], argv[0]); - if(kret && verbose) { - com_err(argv[0], kret, "-- test failed ---"); + + if (do_xtest) { + ch_err = 'x'; + kret = ser_kcontext_test(kcontext, verbose); + if (kret) + goto fail; + } + if (do_atest) { + ch_err = 'a'; + kret = ser_acontext_test(kcontext, verbose); + if (kret) + goto fail; + } + if (do_ctest) { + ch_err = 'c'; + kret = ser_ccache_test(kcontext, verbose); + if (kret) + goto fail; + } + if (do_ktest) { + ch_err = 'k'; + kret = ser_keytab_test(kcontext, verbose); + if (kret) + goto fail; + } + if (do_rtest) { + ch_err = 'r'; + kret = ser_rcache_test(kcontext, verbose); + if (kret) + goto fail; + } + if (do_etest) { + ch_err = 'e'; + kret = ser_eblock_test(kcontext, verbose); + if (kret) + goto fail; + } + if (do_ptest) { + ch_err = 'p'; + kret = ser_princ_test(kcontext, verbose); + if (kret) + goto fail; + } + if (do_stest) { + ch_err = 's'; + kret = ser_cksum_test(kcontext, verbose); + if (kret) + goto fail; } - return((kret) ? 1 : 0); + krb5_free_context(kcontext); + + exit(0); +fail: + com_err(argv[0], kret, "--- test %cfailed", ch_err); + exit(1); } -- 2.26.2