[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with multiple realms/databases




Gabor Gombas <gombasg@sztaki.hu> writes:

> Hi,
>
> Replying to myself: the following patch fixes the problem, now both the
> kdc & kadmind are happy to serve two databases simultaneously.
> kpasswdd still has problems: although it opens both databases according
> to strace, it seems to always look for the principal in the first
> database only regardless the principal's realm.

I added you kpassed patch. Can you expand on the config_file.c patch do. I
understand that it fixes the multi-realm case, but what is the root problem
that it fixes ?

Love


>
> Gabor
>
> --- lib/krb5/config_file.c.orig	2004-09-30 13:22:48.000000000 +0200
> +++ lib/krb5/config_file.c	2006-05-05 11:23:06.000000000 +0200
> @@ -102,6 +102,26 @@
>      return *q;
>  }
>  
> +static krb5_config_section *
> +get_new_entry(krb5_config_section **parent, const char *name, int type)
> +{
> +    krb5_config_section **q;
> +
> +    for(q = parent; *q != NULL; q = &(*q)->next)
> +	/* Nothing */;
> +    *q = calloc(1, sizeof(**q));
> +    if(*q == NULL)
> +	return NULL;
> +    (*q)->name = strdup(name);
> +    (*q)->type = type;
> +    if((*q)->name == NULL) {
> +	free(*q);
> +	*q = NULL;
> +	return NULL;
> +    }
> +    return *q;
> +}
> +
>  /*
>   * Parse a section:
>   *
> @@ -212,7 +232,7 @@
>  	++p;
>      *p2 = '\0';
>      if (*p == '{') {
> -	tmp = get_entry(parent, p1, krb5_config_list);
> +	tmp = get_new_entry(parent, p1, krb5_config_list);
>  	if (tmp == NULL) {
>  	    *error_message = "out of memory";
>  	    return KRB5_CONFIG_BADFORMAT;
>
> -- 
>      ---------------------------------------------------------
>      MTA SZTAKI Computer and Automation Research Institute
>                 Hungarian Academy of Sciences
>      ---------------------------------------------------------

PGP signature