[2604] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

pending/317: Re: Kerberos v51.0 release v4 compat mode problems

daemon@ATHENA.MIT.EDU (Roland Schemers)
Sun Dec 22 18:52:06 1996

Resent-From: gnats@rt-11.MIT.EDU (GNATS Management)
Resent-To: gnats-admin@rt-11.MIT.EDU
Resent-Reply-To: krb5-bugs@MIT.EDU, Roland Schemers <schemers@stanford.edu>
Date: 22 Dec 1996 15:50:38 -0800
From: Roland Schemers <schemers@stanford.edu>
Cc: krb5-bugs@MIT.EDU
In-Reply-To: blizzard@odin.nyser.net's message of 22 Dec 1996 21:35:55 GMT


>Number:         317
>Category:       pending
>Synopsis:       Re: Kerberos v51.0 release v4 compat mode problems
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Class:          sw-bug
>Submitter-Id:   unknown
>Arrival-Date:   Sun Dec 22 18:52:00 EST 1996
>Last-Modified:
>Originator:
>Organization:
>Release:
>Environment:
>Description:
>How-To-Repeat:
>Fix:
>Audit-Trail:
>Unformatted:
The following message is a courtesy copy of an article
that has been posted as well.

blizzard@odin.nyser.net (Christopher Blizzard) writes:
> 
> There seems to be a problem with running the v5 telnetd server without a
> krb5.conf file in place when using a v4 telnet client.  The telnetd server
> will seg fault silently on startup.  To work around this, touch
> /etc/krb5.conf
> 

The bug is in src/lib/krb4/g_cnffile.c:krb__get_srvtabname, line 61:

char *
krb__get_srvtabname(default_srvtabname)
	char *default_srvtabname;
{
	krb5_context context;
	const char* names[3];
	char **full_name = 0, **cpp;
	krb5_error_code retval;
	char *retname;

	krb5_init_context(&context);
	names[0] = "libdefaults";
	names[1] = "krb4_srvtab";
	names[2] = 0;
61:	retval = profile_get_values(context->profile, names, &full_name);
	if (retval == 0 && full_name && full_name[0]) {
		retname = strdup(full_name[0]);
		for (cpp = full_name; *cpp; cpp++) 
			krb5_xfree(*cpp);
		krb5_xfree(full_name);
	} else {
		retname = strdup(default_srvtabname);
	}
	krb5_free_context(context);
	return retname;
}

krb5_int_context is failing and setting context to NULL. Thus the call
to profile_get_values fails. Just need to rearrange things slightly, i.e:

	krb5_init_context(&context);
	names[0] = "libdefaults";
	names[1] = "krb4_srvtab";
	names[2] = 0;
	
	if (context && 
	     (retval = profile_get_values(context->profile, names, &full_name))
		&& retval == 0 && full_name && full_name[0]) {
		retname = strdup(full_name[0]);
		for (cpp = full_name; *cpp; cpp++) 
			krb5_xfree(*cpp);
		krb5_xfree(full_name);
	} else {
		retname = strdup(default_srvtabname);
	}
	if (context) krb5_free_context(context);
	return retname;

roland

home help back first fref pref prev next nref lref last post