[Patch] allow autorid to create a new domain range if the parent already validated the sid (bug #12613)

Jeremy Allison jra at samba.org
Tue Mar 7 22:22:06 UTC 2017


On Tue, Mar 07, 2017 at 12:17:34PM +0100, Stefan Metzmacher wrote:
> Hi,
> 
> here's a patch for https://bugzilla.samba.org/show_bug.cgi?id=12613
> 
> This solved the case where wbinfo --user-sids is called with a sid
> of a domain of which no user has authenticated itself, so we don't
> have a domain stamp in netsamlogon_cache.tdb yet for the domain.
> If autorid.tdb also doesn't have a mapping for that domain yet,
> idmap_autorid will refuse to map the sid.
> 
> Currently the the parent winbindd process already did a lookup_sid
> in order to work out the type (user or group), this hint is then passed
> to the idmap backends.
> 
> I already checked that wbinfo --user-sids with sid that doesn't exists
> (via lookup_sids) will results in ID_TYPE_NOT_SPECIFIED being passed
> to the idmap child, if it exists we pass ID_TYPE_UID or ID_TYPE_GID.
> 
> In future, when we try to avoid the lookup_sids call completely
> because we use a idmap backend with ID_TYPE_BOTH support,
> we can pass ID_TYPE_BOTH instead of ID_TYPE_NOT_SPECIFIED
> if the callers already knows about the domain sid (in the domain list).
> 
> Please review and push:-)

Went through it carefully and think I now understand it :-).

LGTM. Pushed !

> From 8f9c2c00913986f4730a577029c59f96f882be1a Mon Sep 17 00:00:00 2001
> From: Stefan Metzmacher <metze at samba.org>
> Date: Mon, 6 Mar 2017 11:53:09 +0000
> Subject: [PATCH] idmap_autorid: allocate new domain range if the callers knows
>  the sid is valid
> 
> BUG: https://bugzilla.samba.org/show_bug.cgi?id=12613
> 
> Signed-off-by: Stefan Metzmacher <metze at samba.org>
> ---
>  source3/winbindd/idmap_autorid.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/source3/winbindd/idmap_autorid.c b/source3/winbindd/idmap_autorid.c
> index 786f839..ab89d35 100644
> --- a/source3/winbindd/idmap_autorid.c
> +++ b/source3/winbindd/idmap_autorid.c
> @@ -636,6 +636,19 @@ static NTSTATUS idmap_autorid_sid_to_id(struct idmap_tdb_common_context *common,
>  	}
>  
>  	/*
> +	 * If the caller already did a lookup sid and made sure the
> +	 * domain sid is valid, we can allocate a new range.
> +	 *
> +	 * Currently the winbindd parent already does a lookup sids
> +	 * first, but hopefully changes in future. If the
> +	 * caller knows the domain sid, ID_TYPE_BOTH should be
> +	 * passed instead of ID_TYPE_NOT_SPECIFIED.
> +	 */
> +	if (map->xid.type != ID_TYPE_NOT_SPECIFIED) {
> +		goto allocate;
> +	}
> +
> +	/*
>  	 * Check of last resort: A domain is valid if a user from that
>  	 * domain has recently logged in. The samlogon_cache these
>  	 * days also stores the domain sid.
> -- 
> 1.9.1
> 






More information about the samba-technical mailing list