diff options
| author | Günther Deschner <gd@samba.org> | 2008-09-12 11:28:03 +0200 | 
|---|---|---|
| committer | Günther Deschner <gd@samba.org> | 2008-09-12 14:12:24 +0200 | 
| commit | 47dbe6f7aef5cf3b7f2c0da90533fa2da2790cec (patch) | |
| tree | 20bbc270a9abc5fb6fd3151d69a020a1d9003de6 /source3/lib | |
| parent | 00ba381e09988a2b8b531e5e42dfd5a31f822a90 (diff) | |
| download | samba-47dbe6f7aef5cf3b7f2c0da90533fa2da2790cec.tar.gz samba-47dbe6f7aef5cf3b7f2c0da90533fa2da2790cec.tar.bz2 samba-47dbe6f7aef5cf3b7f2c0da90533fa2da2790cec.zip  | |
netapi: fix NetUserSetGroups.
Guenther
(This used to be commit e8b27b69f33fb33c670026b3a24ed95a2f0099fe)
Diffstat (limited to 'source3/lib')
| -rw-r--r-- | source3/lib/netapi/user.c | 42 | 
1 files changed, 22 insertions, 20 deletions
diff --git a/source3/lib/netapi/user.c b/source3/lib/netapi/user.c index 62df2f9da5..986c32ad93 100644 --- a/source3/lib/netapi/user.c +++ b/source3/lib/netapi/user.c @@ -2938,6 +2938,7 @@ WERROR NetUserSetGroups_r(struct libnetapi_ctx *ctx,  	struct samr_Ids user_rids, name_types;  	struct samr_Ids group_rids;  	struct samr_RidWithAttributeArray *rid_array = NULL; +	struct lsa_String *lsa_names = NULL;  	uint32_t *add_rids = NULL;  	uint32_t *del_rids = NULL; @@ -3021,39 +3022,40 @@ WERROR NetUserSetGroups_r(struct libnetapi_ctx *ctx,  			break;  	} +	lsa_names = talloc_array(ctx, struct lsa_String, r->in.num_entries); +	if (!lsa_names) { +		werr = WERR_NOMEM; +		goto done; +	} +  	for (i=0; i < r->in.num_entries; i++) {  		switch (r->in.level) {  			case 0: -				init_lsa_String(&lsa_account_name, i0->grui0_name); +				init_lsa_String(&lsa_names[i], i0->grui0_name);  				i0++;  				break;  			case 1: -				init_lsa_String(&lsa_account_name, i1->grui1_name); +				init_lsa_String(&lsa_names[i], i1->grui1_name);  				i1++;  				break;  		} +	} -		status = rpccli_samr_LookupNames(pipe_cli, ctx, -						 &domain_handle, -						 1, -						 &lsa_account_name, -						 &group_rids, -						 &name_types); -		if (!NT_STATUS_IS_OK(status)) { -			werr = ntstatus_to_werror(status); -			goto done; -		} - -		if (!add_rid_to_array_unique(ctx, -					     group_rids.ids[0], -					     &member_rids, -					     &num_member_rids)) { -			werr = WERR_GENERAL_FAILURE; -			goto done; -		} +	status = rpccli_samr_LookupNames(pipe_cli, ctx, +					 &domain_handle, +					 r->in.num_entries, +					 lsa_names, +					 &group_rids, +					 &name_types); +	if (!NT_STATUS_IS_OK(status)) { +		werr = ntstatus_to_werror(status); +		goto done;  	} +	member_rids = group_rids.ids; +	num_member_rids = group_rids.count; +  	status = rpccli_samr_GetGroupsForUser(pipe_cli, ctx,  					      &user_handle,  					      &rid_array);  | 
