From 4f899d27fe46faddbb527ca4ab9c40bbc2d16f54 Mon Sep 17 00:00:00 2001 From: Theodore Tso Date: Fri, 5 May 1995 04:56:00 +0000 Subject: conv_princ.c (krb5_425_conv_principal): Use new calling convention of krb5_get_realm_domain, which is that it returns the realm *without* the leading dot. Also use the profile code to look up individual instance conversions using [realms]//v4_instance_convert/ This allows special case handling of mit.edu and lithium.lcs.mit.edu. t_kerb.c: New file for testing krb library functions. Currently only tests krb5_425_conv_principal. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5726 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/krb5/krb/ChangeLog | 13 +++++++ src/lib/krb5/krb/Makefile.in | 28 ++++++++++++-- src/lib/krb5/krb/conv_princ.c | 49 +++++++++++++++++------- src/lib/krb5/krb/t_kerb.c | 85 +++++++++++++++++++++++++++++++++++++++++ src/lib/krb5/krb/t_krb5.conf | 29 ++++++++++++++ src/lib/krb5/krb/t_ref_kerb.out | 7 ++++ 6 files changed, 193 insertions(+), 18 deletions(-) create mode 100644 src/lib/krb5/krb/t_kerb.c create mode 100644 src/lib/krb5/krb/t_krb5.conf create mode 100644 src/lib/krb5/krb/t_ref_kerb.out (limited to 'src/lib') diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog index 7157e3042..42e0cea2a 100644 --- a/src/lib/krb5/krb/ChangeLog +++ b/src/lib/krb5/krb/ChangeLog @@ -1,3 +1,16 @@ +Fri May 5 00:06:24 1995 Theodore Y. Ts'o (tytso@dcl) + + * conv_princ.c (krb5_425_conv_principal): Use new calling + convention of krb5_get_realm_domain, which is that it + returns the realm *without* the leading dot. + + Also use the profile code to look up individual instance + conversions using [realms]//v4_instance_covert/ + This allows special case handling of mit.edu and + lithium.lcs.mit.edu. + + * t_kerb.c: New file for testing krb library functions. Currently + only tests krb5_425_conv_principal. Wed May 03 03:30:51 1995 Chris Provenzano (proven@mit.edu) diff --git a/src/lib/krb5/krb/Makefile.in b/src/lib/krb5/krb/Makefile.in index 066b8e7bc..ef3cb9687 100644 --- a/src/lib/krb5/krb/Makefile.in +++ b/src/lib/krb5/krb/Makefile.in @@ -135,17 +135,37 @@ all:: $(OBJS) COMERRLIB=$(BUILDTOP)/util/et/libcom_err.a T_WALK_RTREE_OBJS= t_walk_rtree.o walk_rtree.o tgtname.o unparse.o \ - free_rtree.o bld_pr_ext.o $(COMERRLIB) $(TOPLIBD)/libkrb5.a \ - $(TOPLIBD)/libcrypto.a + free_rtree.o bld_pr_ext.o \ + $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(COMERRLIB) + +T_KERB_OBJS= t_kerb.o conv_princ.o unparse.o \ + $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(COMERRLIB) t_walk_rtree: $(T_WALK_RTREE_OBJS) - $(CC) -o t_walk_rtree $(T_WALK_RTREE_OBJS) $(LIBS) + $(LD) -o t_walk_rtree $(T_WALK_RTREE_OBJS) $(LIBS) + +t_kerb: $(T_KERB_OBJS) + $(LD) -o t_kerb $(T_KERB_OBJS) $(LIBS) -TEST_PROGS= t_walk_rtree +TEST_PROGS= t_walk_rtree t_kerb check:: check-$(WHAT) check-unix:: $(TEST_PROGS) + KRB5_CONFIG=$(srcdir)/t_krb5.conf ; export KRB5_CONFIG ;\ + ./t_kerb 425_conv_principal rcmd e40-po ATHENA.MIT.EDU \ + 425_conv_principal rcmd mit ATHENA.MIT.EDU \ + 425_conv_principal rcmd lithium ATHENA.MIT.EDU \ + 425_conv_principal rcmd tweedledumb CYGNUS.COM \ + 425_conv_principal rcmd uunet UU.NET \ + 425_conv_principal zephyr zephyr ATHENA.MIT.EDU \ + 425_conv_principal kadmin ATHENA.MIT.EDU ATHENA.MIT.EDU \ + > test.out + cmp test.out $(srcdir)/t_ref_kerb.out + $(RM) test.out + + + check-mac:: $(TEST_PROGS) check-windows:: diff --git a/src/lib/krb5/krb/conv_princ.c b/src/lib/krb5/krb/conv_princ.c index e76bf9b88..b74d2d79e 100644 --- a/src/lib/krb5/krb/conv_princ.c +++ b/src/lib/krb5/krb/conv_princ.c @@ -179,6 +179,8 @@ krb5_425_conv_principal(context, name, instance, realm, princ) char buf[256]; /* V4 instances are limited to 40 characters */ krb5_error_code retval; char *domain, *cp; + char **full_name = 0, **cpp; + const char *names[5]; if (instance) { if (instance[0] == '\0') { @@ -195,22 +197,41 @@ krb5_425_conv_principal(context, name, instance, realm, princ) } name = p->v5_str; if (p->flags & DO_REALM_CONVERSION) { - strcpy(buf, instance); - retval = krb5_get_realm_domain(context, realm, &domain); - if (retval) - return retval; - if (domain) { - for (cp = domain; *cp; cp++) - if (isupper(*cp)) - *cp = tolower(*cp); - strcat(buf, domain); - krb5_xfree(domain); - } - instance = buf; + names[0] = "realms"; + names[1] = realm; + names[2] = "v4_instance_convert"; + names[3] = instance; + names[4] = 0; + retval = profile_get_values(context->profile, names, &full_name); + if (retval == 0 && full_name && full_name[0]) { + instance = full_name[0]; + } else { + strcpy(buf, instance); + retval = krb5_get_realm_domain(context, realm, &domain); + if (retval) + return retval; + if (domain) { + for (cp = domain; *cp; cp++) + if (isupper(*cp)) + *cp = tolower(*cp); +#ifndef OLD_CONFIG_FILES + strcat(buf, "."); +#endif + strcat(buf, domain); + krb5_xfree(domain); + } + instance = buf; + } } } not_service: - return(krb5_build_principal(context, princ, strlen(realm), realm, name, - instance, 0)); + retval = krb5_build_principal(context, princ, strlen(realm), realm, name, + instance, 0); + if (full_name) { + for (cpp = full_name; *cpp; cpp++) + krb5_xfree(*cpp); + krb5_xfree(full_name); + } + return retval; } diff --git a/src/lib/krb5/krb/t_kerb.c b/src/lib/krb5/krb/t_kerb.c new file mode 100644 index 000000000..f2dcf8a9a --- /dev/null +++ b/src/lib/krb5/krb/t_kerb.c @@ -0,0 +1,85 @@ +/* + * This driver routine is used to test many of the standard Kerberos library + * routines. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "com_err.h" +#include "krb5.h" + + +void test_425_conv_principal(ctx, name, inst, realm) + krb5_context ctx; + char *name, *inst, *realm; +{ + krb5_error_code retval; + krb5_principal princ; + + retval = krb5_425_conv_principal(ctx, name, inst, realm, &princ); + if (retval) { + com_err("krb5_425_conv_principal", retval, 0); + return; + } + retval = krb5_unparse_name(ctx, princ, &name); + printf("425_converted principal: '%s'\n", name); + free(name); + krb5_free_principal(ctx, princ); +} + +void usage(progname) + char *progname; +{ + fprintf(stderr, "%s: Usage: %s [425_conv_principal