[SCM] Samba Shared Repository - branch v3-5-test updated

Volker Lendecke vlendec at samba.org
Mon Dec 21 08:28:52 MST 2009


The branch, v3-5-test has been updated
       via  45eb237... s3: Shrink winbindd_proto.h a bit
       via  9a4bba3... s3: Fix some nonempty blank lines
       via  8787863... s3: Remove unused get_sam_group_entries
       via  7c309bc... s3: Remove unused winbindd_dual_getsidaliases
       via  013fada... s3: Remove an unused struct definition
       via  fe02517... s3: Remove unused winbindd_dual_getuserdomgroups
       via  2c6905d... s3: Remove unused winbindd_dual_getdcname
       via  79ff187... s3: Remove unused winbindd_dual_lookupname
       via  a17b245... s3: Remove unused winbindd_dual_lookupsid
       via  55478de... s3: Remove unused winbindd_dual_userinfo
       via  92b8aa1... s3: Remove some unused dual functions
       via  a575b44... s3: Remove unused do_async
       via  83dac5e... s3: Remove unused winbindd_gid2sid_async
       via  0e547f5... s3: Remove unused winbindd_uid2sid_async
       via  9cd4a58... s3: Remove unused winbindd_sid2gid_async
       via  810f4f5... s3: Remove unused winbindd_sid2uid_async
       via  21a6a95... s3: Remove unused do_async_domain
       via  8a51dc0... s3: Remove unused query_user_async
       via  ebecce9... s3: Remove unused winbindd_getsidaliases_async
       via  038c852... s3: Remove unused winbindd_lookupname_async
       via  9c3c632... s3: Remove unused winbindd_lookupsid_async
       via  1a786b3... s3:winbind: use wb_fill_pwent in wb_getpwsid
       via  a30f489... s3:winbind: Move fillup_pw_field() as static to wb_fill_pwent.c
      from  350e7db... WHATSNEW: Update changes since 3.5.0pre2.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test


- Log -----------------------------------------------------------------
commit 45eb2372ce7e69428d53ef58b3a216a5bfadbd0c
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 15:27:39 2009 +0100

    s3: Shrink winbindd_proto.h a bit

commit 9a4bba3fd7045268de444105b95b702e57df39e9
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 15:11:55 2009 +0100

    s3: Fix some nonempty blank lines

commit 8787863172d26ee6f4f59b4b099491cd9898d475
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 15:02:56 2009 +0100

    s3: Remove unused get_sam_group_entries

commit 7c309bcba0034a4e6b165ce9d542cb020e2c0e02
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 15:01:44 2009 +0100

    s3: Remove unused winbindd_dual_getsidaliases

commit 013fada66aa9df4cc505f7ed6a2033969b46282a
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:59:11 2009 +0100

    s3: Remove an unused struct definition

commit fe02517e8a622e5b2f9d55f1a18392e91d776a45
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:58:21 2009 +0100

    s3: Remove unused winbindd_dual_getuserdomgroups

commit 2c6905d0bcf0b60ec9bb98c84ac778dfe8b4ea86
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:57:03 2009 +0100

    s3: Remove unused winbindd_dual_getdcname

commit 79ff1876b989ba0eb9de2e348b87a8721b61c7b6
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:55:02 2009 +0100

    s3: Remove unused winbindd_dual_lookupname

commit a17b245a9c6d9f2f954db5b3ff31295917e0f862
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:54:15 2009 +0100

    s3: Remove unused winbindd_dual_lookupsid

commit 55478de7b54cc940324fd76ea2ec05025dbeeccd
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:49:48 2009 +0100

    s3: Remove unused winbindd_dual_userinfo

commit 92b8aa1fd6676fde028c8770fb943a3e36f90329
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:47:57 2009 +0100

    s3: Remove some unused dual functions

commit a575b4434056a46bb936ec395d3c615098b548f9
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:42:18 2009 +0100

    s3: Remove unused do_async

commit 83dac5e827eb5002e581f50662b23b3167a03bd0
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:40:09 2009 +0100

    s3: Remove unused winbindd_gid2sid_async

commit 0e547f5ff62828887cd3796e1dd3d52db9282be3
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:39:36 2009 +0100

    s3: Remove unused winbindd_uid2sid_async

commit 9cd4a58f2c8efd019d95f0cffbcbc51aaec89bf4
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:38:31 2009 +0100

    s3: Remove unused winbindd_sid2gid_async

commit 810f4f5e19534ac6cb3b37ab456804a27c24fdb0
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:37:54 2009 +0100

    s3: Remove unused winbindd_sid2uid_async

commit 21a6a950ed182e14095f2d48dfd9c4bb17ed95b3
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:36:24 2009 +0100

    s3: Remove unused do_async_domain

commit 8a51dc029bfd06ecac09b3e9abed35513b4db386
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:34:15 2009 +0100

    s3: Remove unused query_user_async

commit ebecce92ab90b9e9acf7dbfd200d4e5a9330cf35
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:33:26 2009 +0100

    s3: Remove unused winbindd_getsidaliases_async

commit 038c85202463d79d8c9b01d283706bd9dbc0b057
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:32:34 2009 +0100

    s3: Remove unused winbindd_lookupname_async

commit 9c3c632464115bb21db068f586eee578979a1343
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Dec 21 14:31:31 2009 +0100

    s3: Remove unused winbindd_lookupsid_async

commit 1a786b31b672cd2e6486433d273e5475d6243f42
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Oct 3 17:10:53 2009 +0200

    s3:winbind: use wb_fill_pwent in wb_getpwsid

commit a30f489fa5aae359c3775869e3a26386ef306739
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Oct 17 17:00:13 2009 +0200

    s3:winbind: Move fillup_pw_field() as static to wb_fill_pwent.c

-----------------------------------------------------------------------

Summary of changes:
 source3/Makefile.in                       |    1 -
 source3/winbindd/wb_fill_pwent.c          |   47 +++
 source3/winbindd/wb_getpwsid.c            |   89 +----
 source3/winbindd/winbindd_async.c         |  549 -----------------------------
 source3/winbindd/winbindd_ccache_access.c |    8 +-
 source3/winbindd/winbindd_domain.c        |   28 --
 source3/winbindd/winbindd_group.c         |  284 ---------------
 source3/winbindd/winbindd_idmap.c         |  321 -----------------
 source3/winbindd/winbindd_misc.c          |   92 +-----
 source3/winbindd/winbindd_proto.h         |  147 --------
 source3/winbindd/winbindd_user.c          |  112 ------
 11 files changed, 71 insertions(+), 1607 deletions(-)
 delete mode 100644 source3/winbindd/winbindd_user.c


Changeset truncated at 500 lines:

diff --git a/source3/Makefile.in b/source3/Makefile.in
index 3fcc486..304d432 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -1146,7 +1146,6 @@ IDMAP_ADEX_OBJ = \
 
 WINBINDD_OBJ1 = \
 		winbindd/winbindd.o       \
-		winbindd/winbindd_user.o  \
 		winbindd/winbindd_group.o \
 		winbindd/winbindd_util.o  \
 		winbindd/winbindd_cache.o \
diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c
index 4f4819c..8998bf9 100644
--- a/source3/winbindd/wb_fill_pwent.c
+++ b/source3/winbindd/wb_fill_pwent.c
@@ -27,6 +27,14 @@ struct wb_fill_pwent_state {
 	struct winbindd_pw *pw;
 };
 
+static bool fillup_pw_field(const char *lp_template,
+			    const char *username,
+			    const char *domname,
+			    uid_t uid,
+			    gid_t gid,
+			    const char *in,
+			    fstring out);
+
 static void wb_fill_pwent_sid2uid_done(struct tevent_req *subreq);
 static void wb_fill_pwent_sid2gid_done(struct tevent_req *subreq);
 
@@ -153,3 +161,42 @@ NTSTATUS wb_fill_pwent_recv(struct tevent_req *req)
 {
 	return tevent_req_simple_recv_ntstatus(req);
 }
+
+static bool fillup_pw_field(const char *lp_template,
+			    const char *username,
+			    const char *domname,
+			    uid_t uid,
+			    gid_t gid,
+			    const char *in,
+			    fstring out)
+{
+	char *templ;
+
+	if (out == NULL)
+		return False;
+
+	/* The substitution of %U and %D in the 'template
+	   homedir' is done by talloc_sub_specified() below.
+	   If we have an in string (which means the value has already
+	   been set in the nss_info backend), then use that.
+	   Otherwise use the template value passed in. */
+
+	if ((in != NULL) && (in[0] != '\0') && (lp_security() == SEC_ADS)) {
+		templ = talloc_sub_specified(talloc_tos(), in,
+					     username, domname,
+					     uid, gid);
+	} else {
+		templ = talloc_sub_specified(talloc_tos(), lp_template,
+					     username, domname,
+					     uid, gid);
+	}
+
+	if (!templ)
+		return False;
+
+	safe_strcpy(out, templ, sizeof(fstring) - 1);
+	TALLOC_FREE(templ);
+
+	return True;
+
+}
diff --git a/source3/winbindd/wb_getpwsid.c b/source3/winbindd/wb_getpwsid.c
index 1295d5b..4ccc51a 100644
--- a/source3/winbindd/wb_getpwsid.c
+++ b/source3/winbindd/wb_getpwsid.c
@@ -31,8 +31,7 @@ struct wb_getpwsid_state {
 
 static void wb_getpwsid_queryuser_done(struct tevent_req *subreq);
 static void wb_getpwsid_lookupsid_done(struct tevent_req *subreq);
-static void wb_getpwsid_sid2uid_done(struct tevent_req *subreq);
-static void wb_getpwsid_sid2gid_done(struct tevent_req *subreq);
+static void wb_getpwsid_done(struct tevent_req *subreq);
 
 struct tevent_req *wb_getpwsid_send(TALLOC_CTX *mem_ctx,
 				    struct tevent_context *ev,
@@ -83,14 +82,14 @@ static void wb_getpwsid_queryuser_done(struct tevent_req *subreq)
 	    && (state->userinfo->acct_name[0] != '\0')) {
 		/*
 		 * QueryUser got us a name, let's got directly to the
-		 * sid2uid step
+		 * fill_pwent step
 		 */
-		subreq = wb_sid2uid_send(state, state->ev,
-					 &state->userinfo->user_sid);
+		subreq = wb_fill_pwent_send(state, state->ev, state->userinfo,
+					    state->pw);
 		if (tevent_req_nomem(subreq, req)) {
 			return;
 		}
-		tevent_req_set_callback(subreq, wb_getpwsid_sid2uid_done, req);
+		tevent_req_set_callback(subreq, wb_getpwsid_done, req);
 		return;
 	}
 
@@ -122,93 +121,25 @@ static void wb_getpwsid_lookupsid_done(struct tevent_req *subreq)
 		tevent_req_nterror(req, status);
 		return;
 	}
-	subreq = wb_sid2uid_send(state, state->ev, &state->userinfo->user_sid);
+	subreq = wb_fill_pwent_send(state, state->ev, state->userinfo,
+				    state->pw);
 	if (tevent_req_nomem(subreq, req)) {
 		return;
 	}
-	tevent_req_set_callback(subreq, wb_getpwsid_sid2uid_done, req);
+	tevent_req_set_callback(subreq, wb_getpwsid_done, req);
 }
 
-static void wb_getpwsid_sid2uid_done(struct tevent_req *subreq)
+static void wb_getpwsid_done(struct tevent_req *subreq)
 {
 	struct tevent_req *req = tevent_req_callback_data(
 		subreq, struct tevent_req);
-	struct wb_getpwsid_state *state = tevent_req_data(
-		req, struct wb_getpwsid_state);
-	NTSTATUS status;
-
-	status = wb_sid2uid_recv(subreq, &state->pw->pw_uid);
-	TALLOC_FREE(subreq);
-	if (!NT_STATUS_IS_OK(status)) {
-		tevent_req_nterror(req, status);
-		return;
-	}
-	subreq = wb_sid2gid_send(state, state->ev,
-				 &state->userinfo->group_sid);
-	if (tevent_req_nomem(subreq, req)) {
-		return;
-	}
-	tevent_req_set_callback(subreq, wb_getpwsid_sid2gid_done, req);
-}
-
-static void wb_getpwsid_sid2gid_done(struct tevent_req *subreq)
-{
-	struct tevent_req *req = tevent_req_callback_data(
-		subreq, struct tevent_req);
-	struct wb_getpwsid_state *state = tevent_req_data(
-		req, struct wb_getpwsid_state);
 	NTSTATUS status;
-	char *username;
-	char *mapped_name;
 
-	status = wb_sid2gid_recv(subreq, &state->pw->pw_gid);
-	TALLOC_FREE(subreq);
+	status = wb_fill_pwent_recv(subreq);
 	if (!NT_STATUS_IS_OK(status)) {
 		tevent_req_nterror(req, status);
 		return;
 	}
-
-	username = talloc_strdup_lower(state, state->userinfo->acct_name);
-	if (tevent_req_nomem(username, req)) {
-		return;
-	}
-
-	status = normalize_name_map(state, state->user_domain, username,
-				    &mapped_name);
-
-	if (NT_STATUS_IS_OK(status)
-	    || NT_STATUS_EQUAL(status, NT_STATUS_FILE_RENAMED)) {
-		/*
-		 * normalize_name_map did something
-		 */
-		fstrcpy(state->pw->pw_name, mapped_name);
-		TALLOC_FREE(mapped_name);
-	} else {
-		fill_domain_username(state->pw->pw_name,
-				     state->user_domain->name,
-				     username, True);
-	}
-	fstrcpy(state->pw->pw_passwd, "*");
-	fstrcpy(state->pw->pw_gecos, state->userinfo->full_name);
-
-	if (!fillup_pw_field(lp_template_homedir(), username,
-			     state->user_domain->name, state->pw->pw_uid,
-			     state->pw->pw_gid, state->userinfo->homedir,
-			     state->pw->pw_dir)) {
-		DEBUG(5, ("Could not compose homedir\n"));
-		tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
-		return;
-	}
-
-	if (!fillup_pw_field(lp_template_shell(), state->pw->pw_name,
-			     state->user_domain->name, state->pw->pw_uid,
-			     state->pw->pw_gid, state->userinfo->shell,
-			     state->pw->pw_shell)) {
-		DEBUG(5, ("Could not compose shell\n"));
-		tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
-		return;
-	}
-
 	tevent_req_done(req);
 }
 
diff --git a/source3/winbindd/winbindd_async.c b/source3/winbindd/winbindd_async.c
index 6c5d92e..5a350b9 100644
--- a/source3/winbindd/winbindd_async.c
+++ b/source3/winbindd/winbindd_async.c
@@ -6,17 +6,6 @@
    Copyright (C) Volker Lendecke 2005
    Copyright (C) Gerald Carter 2006
 
-   The helpers always consist of three functions: 
-
-   * A request setup function that takes the necessary parameters together
-     with a continuation function that is to be called upon completion
-
-   * A private continuation function that is internal only. This is to be
-     called by the lower-level functions in do_async(). Its only task is to
-     properly call the continuation function named above.
-
-   * A worker function that is called inside the appropriate child process.
-
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
@@ -37,423 +26,6 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 
-struct do_async_state {
-	TALLOC_CTX *mem_ctx;
-	struct winbindd_request request;
-	struct winbindd_response response;
-	void (*cont)(TALLOC_CTX *mem_ctx,
-		     bool success,
-		     struct winbindd_response *response,
-		     void *c, void *private_data);
-	void *c, *private_data;
-};
-
-static void do_async_recv(void *private_data, bool success)
-{
-	struct do_async_state *state =
-		talloc_get_type_abort(private_data, struct do_async_state);
-
-	state->cont(state->mem_ctx, success, &state->response,
-		    state->c, state->private_data);
-}
-
-void do_async(TALLOC_CTX *mem_ctx, struct winbindd_child *child,
-	      const struct winbindd_request *request,
-	      void (*cont)(TALLOC_CTX *mem_ctx, bool success,
-			   struct winbindd_response *response,
-			   void *c, void *private_data),
-	      void *c, void *private_data)
-{
-	struct do_async_state *state;
-
-	state = TALLOC_ZERO_P(mem_ctx, struct do_async_state);
-	if (state == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		cont(mem_ctx, False, NULL, c, private_data);
-		return;
-	}
-
-	state->mem_ctx = mem_ctx;
-	state->request = *request;
-	state->request.length = sizeof(state->request);
-	state->cont = cont;
-	state->c = c;
-	state->private_data = private_data;
-
-	async_request(mem_ctx, child, &state->request,
-		      &state->response, do_async_recv, state);
-}
-
-static void do_async_domain(TALLOC_CTX *mem_ctx, struct winbindd_domain *domain,
-			    const struct winbindd_request *request,
-			    void (*cont)(TALLOC_CTX *mem_ctx, bool success,
-					 struct winbindd_response *response,
-					 void *c, void *private_data),
-			    void *c, void *private_data)
-{
-	struct do_async_state *state;
-
-	state = TALLOC_ZERO_P(mem_ctx, struct do_async_state);
-	if (state == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		cont(mem_ctx, False, NULL, c, private_data);
-		return;
-	}
-
-	state->mem_ctx = mem_ctx;
-	state->request = *request;
-	state->request.length = sizeof(state->request);
-	state->cont = cont;
-	state->c = c;
-	state->private_data = private_data;
-
-	async_domain_request(mem_ctx, domain, &state->request,
-			     &state->response, do_async_recv, state);
-}
-
-struct lookupsid_state {
-	DOM_SID sid;	
-	void *caller_private_data;
-};
-
-
-static void lookupsid_recv2(TALLOC_CTX *mem_ctx, bool success,
-			   struct winbindd_response *response,
-			   void *c, void *private_data)
-{
-	void (*cont)(void *priv, bool succ, const char *dom_name,
-		     const char *name, enum lsa_SidType type) =
-		(void (*)(void *, bool, const char *, const char *,
-			  enum lsa_SidType))c;
-	struct lookupsid_state *s = talloc_get_type_abort(private_data, 
-							  struct lookupsid_state);
-
-	if (!success) {
-		DEBUG(5, ("Could not trigger lookupsid\n"));
-		cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-
-	if (response->result != WINBINDD_OK) {
-		DEBUG(5, ("lookupsid (forest root) returned an error\n"));		
-		cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-
-	cont(s->caller_private_data, True, response->data.name.dom_name,
-	     response->data.name.name,
-	     (enum lsa_SidType)response->data.name.type);
-}
-
-static void lookupsid_recv(TALLOC_CTX *mem_ctx, bool success,
-			   struct winbindd_response *response,
-			   void *c, void *private_data)
-{
-	void (*cont)(void *priv, bool succ, const char *dom_name,
-		     const char *name, enum lsa_SidType type) =
-		(void (*)(void *, bool, const char *, const char *,
-			  enum lsa_SidType))c;
-	struct lookupsid_state *s = talloc_get_type_abort(private_data, 
-							  struct lookupsid_state);
-
-	if (!success) {
-		DEBUG(5, ("Could not trigger lookupsid\n"));
-		cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-
-	if (response->result != WINBINDD_OK) {
-		/* Try again using the forest root */
-		struct winbindd_domain *root_domain = find_root_domain();
-		struct winbindd_request request;
-
-		if ( !root_domain ) {
-			DEBUG(5,("lookupsid_recv: unable to determine forest root\n"));
-			cont(s->caller_private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
-			return;
-		}
-
-		ZERO_STRUCT(request);
-		request.cmd = WINBINDD_LOOKUPSID;
-		sid_to_fstring(request.data.sid, &s->sid);
-
-		do_async_domain(mem_ctx, root_domain, &request, lookupsid_recv2,
-				(void *)cont, s);
-
-		return;
-	}
-
-	cont(s->caller_private_data, True, response->data.name.dom_name,
-	     response->data.name.name,
-	     (enum lsa_SidType)response->data.name.type);
-}
-
-void winbindd_lookupsid_async(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-			      void (*cont)(void *private_data, bool success,
-					   const char *dom_name,
-					   const char *name,
-					   enum lsa_SidType type),
-			      void *private_data)
-{
-	struct winbindd_domain *domain;
-	struct winbindd_request request;
-	struct lookupsid_state *s;	
-
-	domain = find_lookup_domain_from_sid(sid);
-	if (domain == NULL) {
-		DEBUG(5, ("Could not find domain for sid %s\n",
-			  sid_string_dbg(sid)));
-		cont(private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-
-	ZERO_STRUCT(request);
-	request.cmd = WINBINDD_LOOKUPSID;
-	sid_to_fstring(request.data.sid, sid);
-
-	if ( (s = TALLOC_ZERO_P(mem_ctx, struct lookupsid_state)) == NULL ) {
-		DEBUG(0, ("winbindd_lookupsid_async: talloc failed\n"));
-		cont(private_data, False, NULL, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-
-	sid_copy( &s->sid, sid );	
-	s->caller_private_data = private_data;	
-
-	do_async_domain(mem_ctx, domain, &request, lookupsid_recv,
-			(void *)cont, s);
-}
-
-enum winbindd_result winbindd_dual_lookupsid(struct winbindd_domain *domain,
-					     struct winbindd_cli_state *state)
-{
-	enum lsa_SidType type;
-	DOM_SID sid;
-	char *name;
-	char *dom_name;
-
-	/* Ensure null termination */
-	state->request->data.sid[sizeof(state->request->data.sid)-1]='\0';
-
-	DEBUG(3, ("[%5lu]: lookupsid %s\n", (unsigned long)state->pid, 
-		  state->request->data.sid));
-
-	/* Lookup sid from PDC using lsa_lookup_sids() */
-
-	if (!string_to_sid(&sid, state->request->data.sid)) {
-		DEBUG(5, ("%s not a SID\n", state->request->data.sid));
-		return WINBINDD_ERROR;
-	}
-
-	/* Lookup the sid */
-
-	if (!winbindd_lookup_name_by_sid(state->mem_ctx, domain, &sid, 
-					 &dom_name, &name, &type)) 
-	{
-		TALLOC_FREE(dom_name);
-		TALLOC_FREE(name);
-		return WINBINDD_ERROR;
-	}
-
-	fstrcpy(state->response->data.name.dom_name, dom_name);
-	fstrcpy(state->response->data.name.name, name);
-	state->response->data.name.type = type;
-
-	TALLOC_FREE(dom_name);
-	TALLOC_FREE(name);
-	return WINBINDD_OK;
-}
-
-/********************************************************************
- This is the second callback after contacting the forest root
-********************************************************************/
-
-struct lookupname_state {
-	char *dom_name;
-	char *name;
-	void *caller_private_data;
-};
-
-
-static void lookupname_recv2(TALLOC_CTX *mem_ctx, bool success,
-			    struct winbindd_response *response,
-			    void *c, void *private_data)
-{
-	void (*cont)(void *priv, bool succ, const DOM_SID *sid,
-		     enum lsa_SidType type) =
-		(void (*)(void *, bool, const DOM_SID *, enum lsa_SidType))c;
-	DOM_SID sid;
-	struct lookupname_state *s = talloc_get_type_abort( private_data,
-							    struct lookupname_state );
-
-	if (!success) {
-		DEBUG(5, ("Could not trigger lookup_name\n"));
-		cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-
-	if (response->result != WINBINDD_OK) {
-		DEBUG(5, ("lookup_name returned an error\n"));
-		cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-
-	if (!string_to_sid(&sid, response->data.sid.sid)) {
-		DEBUG(0, ("Could not convert string %s to sid\n",
-			  response->data.sid.sid));
-		cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN);
-		return;
-	}
-


-- 
Samba Shared Repository


More information about the samba-cvs mailing list