summaryrefslogtreecommitdiffstats
path: root/src/tests/t_localauth.c
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-02-27 15:00:37 -0500
committerGreg Hudson <ghudson@mit.edu>2013-03-09 02:03:32 -0500
commitb8696b1ed70ffebbeee7142f1e5e086d75ce4e30 (patch)
treef2f42eb7f7202fe028b6620da725c9223edd7a69 /src/tests/t_localauth.c
parent4216fb5b0e0abb80a3ccd8251abddc18435d81f3 (diff)
downloadkrb5-b8696b1ed70ffebbeee7142f1e5e086d75ce4e30.tar.gz
krb5-b8696b1ed70ffebbeee7142f1e5e086d75ce4e30.tar.xz
krb5-b8696b1ed70ffebbeee7142f1e5e086d75ce4e30.zip
Add tests for localauth interface
Create a test module, program, and script to exercise the krb5_aname_to_localname and krb5_k5userok functions as well as the localauth pluggable interface. ticket: 7583
Diffstat (limited to 'src/tests/t_localauth.c')
-rw-r--r--src/tests/t_localauth.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/tests/t_localauth.c b/src/tests/t_localauth.c
new file mode 100644
index 000000000..3a65b5b97
--- /dev/null
+++ b/src/tests/t_localauth.c
@@ -0,0 +1,72 @@
+/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* tests/t_localauth.c - test harness for kuserok and aname_to_lname */
+/*
+ * Copyright (C) 2013 by the Massachusetts Institute of Technology.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <krb5.h>
+#include <stdio.h>
+
+static krb5_context ctx;
+
+static void
+check(krb5_error_code code)
+{
+ const char *errmsg;
+
+ if (code) {
+ errmsg = krb5_get_error_message(ctx, code);
+ fprintf(stderr, "%s\n", errmsg);
+ krb5_free_error_message(ctx, errmsg);
+ exit(1);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ krb5_principal princ;
+ char buf[1024];
+
+ if (argc < 2 || argc > 3) {
+ fprintf(stderr, "Usage: t_localauth principal [localuser]\n");
+ return 1;
+ }
+ check(krb5_init_context(&ctx));
+ check(krb5_parse_name(ctx, argv[1], &princ));
+ if (argc == 3) {
+ printf("%s\n", krb5_kuserok(ctx, princ, argv[2]) ? "yes" : "no");
+ } else {
+ check(krb5_aname_to_localname(ctx, princ, sizeof(buf), buf));
+ printf("%s\n", buf);
+ }
+ krb5_free_principal(ctx, princ);
+ krb5_free_context(ctx);
+ return 0;
+}