From e976877e0c7ee353829f6e791b24743ff471ca05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Thu, 20 Jul 2006 05:13:25 +0000 Subject: [PATCH] more name testing git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17856 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/gssapi/test_names.c | 67 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/lib/gssapi/test_names.c b/lib/gssapi/test_names.c index 2f48a198a..a12b2f22e 100644 --- a/lib/gssapi/test_names.c +++ b/lib/gssapi/test_names.c @@ -102,10 +102,10 @@ main(int argc, char **argv) { gss_buffer_desc name_buffer; OM_uint32 maj_stat, min_stat; - gss_name_t name, MNname; + gss_name_t name, MNname, MNname2; int optidx = 0; char *str; - int len; + int len, equal; setprogname(argv[0]); if(getarg(args, sizeof(args) / sizeof(args[0]), argc, argv, &optidx)) @@ -122,6 +122,10 @@ main(int argc, char **argv) argc -= optidx; argv += optidx; + /* + * test import/export + */ + len = asprintf(&str, "ftp@freeze-arrow.mit.edu"); if (len == -1) errx(1, "asprintf"); @@ -143,14 +147,68 @@ main(int argc, char **argv) if (maj_stat != GSS_S_COMPLETE) gss_err(1, min_stat, "canonicalize name error"); - maj_stat = gss_export_name(&maj_stat, + maj_stat = gss_export_name(&min_stat, MNname, &name_buffer); if (maj_stat != GSS_S_COMPLETE) gss_err(1, min_stat, "export name error (KRB5)"); - gss_release_name(&min_stat, &MNname); + /* + * Import the exported name and compare + */ + + maj_stat = gss_import_name(&min_stat, &name_buffer, + GSS_C_NT_EXPORT_NAME, + &MNname2); + if (maj_stat != GSS_S_COMPLETE) + gss_err(1, min_stat, "import name error (exported KRB5 name)"); + + + maj_stat = gss_compare_name(&min_stat, MNname, MNname2, &equal); + if (maj_stat != GSS_S_COMPLETE) + errx(1, "gss_compare_name"); + if (!equal) + errx(1, "names not equal"); + + gss_release_name(&min_stat, &MNname2); gss_release_buffer(&min_stat, &name_buffer); + gss_release_name(&min_stat, &MNname); + gss_release_name(&min_stat, &name); + + /* + * Import oid less name and compare to mech name. + * Dovecot SASL lib does this. + */ + + len = asprintf(&str, "lha"); + if (len == -1) + errx(1, "asprintf"); + + name_buffer.value = str; + name_buffer.length = len; + + maj_stat = gss_import_name(&min_stat, &name_buffer, + GSS_C_NO_OID, + &name); + if (maj_stat != GSS_S_COMPLETE) + gss_err(1, min_stat, "import (no oid) name error"); + + maj_stat = gss_import_name(&min_stat, &name_buffer, + GSS_KRB5_NT_USER_NAME, + &MNname); + if (maj_stat != GSS_S_COMPLETE) + gss_err(1, min_stat, "import (krb5 mn) name error"); + + free(str); + + maj_stat = gss_compare_name(&min_stat, name, MNname, &equal); + if (maj_stat != GSS_S_COMPLETE) + errx(1, "gss_compare_name"); + if (!equal) + errx(1, "names not equal"); + + gss_release_name(&min_stat, &MNname); + gss_release_name(&min_stat, &name); #if 0 maj_stat = gss_canonicalize_name (&min_stat, @@ -170,7 +228,6 @@ main(int argc, char **argv) gss_release_name(&min_stat, &MNname); gss_release_buffer(&min_stat, &name_buffer); #endif - gss_release_name(&min_stat, &name); return 0; }