[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-3016-ga2c3131

simo idra at samba.org
Thu Sep 11 14:03:55 GMT 2008


Karolin,
please pick this up for 3.2.4, it solve an important bug that affect
returning proper domain membership when winbindd default domain = yes is
used.

On Thu, 2008-09-11 at 09:02 -0500, Simo Sorce wrote:
> The branch, v3-2-test has been updated
>        via  a2c313182135fc4f7596a595c5143b7bb71a0bdf (commit)
>       from  b17f9ecc8e8beb40f798dd47f3440811e8d07e81 (commit)
> 
> http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
> 
> 
> - Log -----------------------------------------------------------------
> commit a2c313182135fc4f7596a595c5143b7bb71a0bdf
> Author: Simo Sorce <idra at samba.org>
> Date:   Thu Sep 11 09:51:39 2008 -0400
> 
>     Fix for bug 5571
>     Make sure that usernames are parsed using the correct separator.
>     Otherwise group memeberships in winbind may be result broken.
> 
> -----------------------------------------------------------------------
> 
> Summary of changes:
>  source/winbindd/winbindd_group.c |    5 +++--
>  source/winbindd/winbindd_util.c  |   25 +++++++++++++++++++++++++
>  2 files changed, 28 insertions(+), 2 deletions(-)
> 
> 
> Changeset truncated at 500 lines:
> 
> diff --git a/source/winbindd/winbindd_group.c b/source/winbindd/winbindd_group.c
> index 20b90e3..f81caa2 100644
> --- a/source/winbindd/winbindd_group.c
> +++ b/source/winbindd/winbindd_group.c
> @@ -596,8 +596,9 @@ static bool fill_grent_mem(struct winbindd_domain *domain,
>  			(*num_gr_mem)++;
>  			DEBUG(10, ("buf_len + %d = %d\n", len + 1, buf_len));
>  		} else {
> -			DEBUG(10, ("appending %s at ndx %d\n", names[i], buf_ndx));
> -			safe_strcpy(&buf[buf_ndx], names[i], len);
> +			DEBUG(10, ("appending %s at ndx %d\n",
> +				   names[i], buf_ndx));
> +			parse_add_domuser(&buf[buf_ndx], names[i], &len);
>  			buf_ndx += len;
>  			buf[buf_ndx] = ',';
>  			buf_ndx++;
> diff --git a/source/winbindd/winbindd_util.c b/source/winbindd/winbindd_util.c
> index 9b626d1..cfe9136 100644
> --- a/source/winbindd/winbindd_util.c
> +++ b/source/winbindd/winbindd_util.c
> @@ -1104,6 +1104,31 @@ bool parse_domain_user_talloc(TALLOC_CTX *mem_ctx, const char *domuser,
>  	return ((*domain != NULL) && (*user != NULL));
>  }
>  
> +/* add a domain user name to a buffer */
> +void parse_add_domuser(void *buf, char *domuser, int *len)
> +{
> +	fstring domain;
> +	char *p, *user;
> +
> +	user = domuser;
> +	p = strchr(domuser, *lp_winbind_separator());
> +
> +	if (p) {
> +
> +		fstrcpy(domain, domuser);
> +		domain[PTR_DIFF(p, domuser)] = 0;
> +		p++;
> +
> +		if (assume_domain(domain)) {
> +
> +			user = p;
> +			*len -= (PTR_DIFF(p, domuser));
> +		}
> +	}
> +
> +	safe_strcpy(buf, user, *len);
> +}
> +
>  /* Ensure an incoming username from NSS is fully qualified. Replace the
>     incoming fstring with DOMAIN <separator> user. Returns the same
>     values as parse_domain_user() but also replaces the incoming username.
> 
> 
-- 
Simo Sorce
Samba Team GPL Compliance Officer <simo at samba.org>
Senior Software Engineer at Red Hat Inc. <simo at redhat.com>



More information about the samba-technical mailing list