t_ser.c: Clean up error reporting for krb5_init_context(). Also
authorTheodore Tso <tytso@mit.edu>
Mon, 24 Mar 1997 17:23:17 +0000 (17:23 +0000)
committerTheodore Tso <tytso@mit.edu>
Mon, 24 Mar 1997 17:23:17 +0000 (17:23 +0000)
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
src/lib/krb5/krb/t_ser.c

index 85bd7473afb9a6ab7d76df784cea80be1a2f0f74..2573b959cd5a83e747defd0971ce796bf2e6f5e2 100644 (file)
@@ -1,3 +1,9 @@
+Mon Mar 24 12:21:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * 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  <basch@lehman.com>
 
        * Makefile.in: Use some of the new library list build rules in
index 5ad2f951e4dd9227798ab3530582ac895e702971..f7b4cab38ccde149f32292efdef0415184964c0b 100644 (file)
  * t_ser.c - Test serialization.
  */
 #include "k5-int.h"
+#include "com_err.h"
 #include "auth_con.h"
 
+#include <ctype.h>
+
 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);
 }