[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-46-g4977d91

Jelmer Vernooij jelmer at samba.org
Wed Jan 21 15:18:33 GMT 2009


The branch, master has been updated
       via  4977d913ed54935383155f7b2045fd6679bacc33 (commit)
       via  f3ecb701335b1129947127d4c45eef970b66875c (commit)
       via  47951fc5d0085e124666b7667715bba98076820e (commit)
       via  d3199276eac8caa55c8334458d156fd4badae338 (commit)
      from  b319549f129b1c79afc9bfd4a84f2730b96d69a3 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 4977d913ed54935383155f7b2045fd6679bacc33
Merge: f3ecb701335b1129947127d4c45eef970b66875c b319549f129b1c79afc9bfd4a84f2730b96d69a3
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Jan 21 16:18:06 2009 +0100

    Merge branch 'master' of ssh://git.samba.org/data/git/samba

commit f3ecb701335b1129947127d4c45eef970b66875c
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Jan 21 16:15:53 2009 +0100

    Replace ldb_search() with ldb_search_exp_fmt(), like in Samba 4.

commit 47951fc5d0085e124666b7667715bba98076820e
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Jan 21 15:18:05 2009 +0100

    Reorder arguments to ldb_search() to match what is in Samba 4.

commit d3199276eac8caa55c8334458d156fd4badae338
Merge: 1d59fd4d733007ccabb69c945e1da2208c376b96 157864d1e8cb069a3be0aadf71e114f9ae827df3
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Jan 21 14:24:16 2009 +0100

    Merge branch 'master' of ssh://git.samba.org/data/git/samba

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

Summary of changes:
 source3/groupdb/mapping_ldb.c        |   52 +++++++++------------------------
 source3/lib/ldb/common/ldb.c         |   24 +++++++-------
 source3/lib/ldb/common/ldb_modules.c |    2 +-
 source3/lib/ldb/examples/ldbreader.c |    5 +--
 source3/lib/ldb/include/ldb.h        |   13 +-------
 source3/lib/ldb/modules/ldb_map.c    |    2 +-
 source3/lib/ldb/nssldb/ldb-grp.c     |   53 ++++++---------------------------
 source3/lib/ldb/nssldb/ldb-pwd.c     |   38 ++++--------------------
 source3/lib/ldb/tools/ad2oLschema.c  |   21 +++++--------
 source3/lib/ldb/tools/ldbdel.c       |    2 +-
 source3/lib/ldb/tools/ldbedit.c      |    2 +-
 source3/lib/ldb/tools/ldbtest.c      |   10 ++----
 12 files changed, 62 insertions(+), 162 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/groupdb/mapping_ldb.c b/source3/groupdb/mapping_ldb.c
index db32155..af99b86 100644
--- a/source3/groupdb/mapping_ldb.c
+++ b/source3/groupdb/mapping_ldb.c
@@ -221,7 +221,7 @@ static bool get_group_map_from_sid(DOM_SID sid, GROUP_MAP *map)
 	dn = mapping_dn(ldb, &sid);
 	if (dn == NULL) goto failed;
 
-	ret = ldb_search(ldb, dn, LDB_SCOPE_BASE, NULL, NULL, &res);
+	ret = ldb_search(ldb, ldb, &res, dn, LDB_SCOPE_BASE, NULL, NULL);
 	talloc_steal(dn, res);
 	if (ret != LDB_SUCCESS || res->count != 1) {
 		goto failed;
@@ -243,24 +243,16 @@ failed:
 static bool get_group_map_from_gid(gid_t gid, GROUP_MAP *map)
 {
 	int ret;
-	char *expr;
 	struct ldb_result *res=NULL;
 
-	expr = talloc_asprintf(ldb, "(&(gidNumber=%u)(objectClass=groupMap))", 
-			       (unsigned)gid);
-	if (expr == NULL) goto failed;
-
-	ret = ldb_search(ldb, NULL, LDB_SCOPE_SUBTREE, expr, NULL, &res);
-	talloc_steal(expr, res);
+	ret = ldb_search(ldb, ldb, &res, NULL, LDB_SCOPE_SUBTREE, NULL, "(&(gidNumber=%u)(objectClass=groupMap))", (unsigned)gid);
 	if (ret != LDB_SUCCESS || res->count != 1) goto failed;
 	
 	if (!msg_to_group_map(res->msgs[0], map)) goto failed;
 
-	talloc_free(expr);
 	return True;
 
 failed:
-	talloc_free(expr);
 	return False;
 }
 
@@ -270,23 +262,16 @@ failed:
 static bool get_group_map_from_ntname(const char *name, GROUP_MAP *map)
 {
 	int ret;
-	char *expr;
 	struct ldb_result *res=NULL;
 
-	expr = talloc_asprintf(ldb, "(&(ntName=%s)(objectClass=groupMap))", name);
-	if (expr == NULL) goto failed;
-
-	ret = ldb_search(ldb, NULL, LDB_SCOPE_SUBTREE, expr, NULL, &res);
-	talloc_steal(expr, res);
+	ret = ldb_search(ldb, ldb, &res, NULL, LDB_SCOPE_SUBTREE, NULL, "(&(ntName=%s)(objectClass=groupMap))", name);
 	if (ret != LDB_SUCCESS || res->count != 1) goto failed;
 	
 	if (!msg_to_group_map(res->msgs[0], map)) goto failed;
 
-	talloc_free(expr);
 	return True;
 
 failed:
-	talloc_free(expr);
 	return False;
 }
 
@@ -317,7 +302,6 @@ static bool enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_
 			       size_t *p_num_entries, bool unix_only)
 {
 	int i, ret;
-	char *expr;
 	fstring name;
 	struct ldb_result *res = NULL;
 	struct ldb_dn *basedn=NULL;
@@ -326,14 +310,6 @@ static bool enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_
 	tmp_ctx = talloc_new(ldb);
 	if (tmp_ctx == NULL) goto failed;
 
-	if (sid_name_use == SID_NAME_UNKNOWN) {
-		expr = talloc_asprintf(tmp_ctx, "(&(objectClass=groupMap))");
-	} else {
-		expr = talloc_asprintf(tmp_ctx, "(&(sidNameUse=%u)(objectClass=groupMap))",
-				       sid_name_use);
-	}
-	if (expr == NULL) goto failed;
-
 	/* we do a subtree search on the domain */
 	if (domsid != NULL) {
 		sid_to_fstring(name, domsid);
@@ -341,7 +317,15 @@ static bool enum_group_mapping(const DOM_SID *domsid, enum lsa_SidType sid_name_
 		if (basedn == NULL) goto failed;
 	}
 
-	ret = ldb_search(ldb, basedn, LDB_SCOPE_SUBTREE, expr, NULL, &res);
+	if (sid_name_use == SID_NAME_UNKNOWN) {
+		ret = ldb_search(ldb, ldb, &res, basedn, LDB_SCOPE_SUBTREE, NULL, 
+						 "(&(objectClass=groupMap))");
+	} else {
+		ret = ldb_search(ldb, ldb, &res, basedn, LDB_SCOPE_SUBTREE, NULL, 
+						 "(&(sidNameUse=%u)(objectClass=groupMap))",
+						 sid_name_use);
+	}
+
 	talloc_steal(tmp_ctx, res);
 	if (ret != LDB_SUCCESS) goto failed;
 
@@ -380,7 +364,6 @@ static NTSTATUS one_alias_membership(const DOM_SID *member,
 		NULL
 	};
 	DOM_SID alias;
-	char *expr;
 	int ret, i;
 	struct ldb_result *res=NULL;
 	fstring string_sid;
@@ -390,12 +373,7 @@ static NTSTATUS one_alias_membership(const DOM_SID *member,
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	expr = talloc_asprintf(ldb, "(&(member=%s)(objectClass=groupMap))", 
-			       string_sid);
-	if (expr == NULL) goto failed;
-
-	ret = ldb_search(ldb, NULL, LDB_SCOPE_SUBTREE, expr, attrs, &res);
-	talloc_steal(expr, res);
+	ret = ldb_search(ldb, ldb, &res, NULL, LDB_SCOPE_SUBTREE, attrs, "(&(member=%s)(objectClass=groupMap))", string_sid);
 	if (ret != LDB_SUCCESS) {
 		goto failed;
 	}
@@ -414,11 +392,9 @@ static NTSTATUS one_alias_membership(const DOM_SID *member,
 		}
 	}
 
-	talloc_free(expr);
 	return NT_STATUS_OK;
 
 failed:
-	talloc_free(expr);
 	return status;
 }
 
@@ -515,7 +491,7 @@ static NTSTATUS enum_aliasmem(const DOM_SID *alias, DOM_SID **sids, size_t *num)
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	ret = ldb_search(ldb, dn, LDB_SCOPE_BASE, NULL, attrs, &res);
+	ret = ldb_search(ldb, ldb, &res, dn, LDB_SCOPE_BASE, attrs, NULL);
 	talloc_steal(dn, res);
 	if (ret == LDB_SUCCESS && res->count == 0) {
 		talloc_free(dn);
diff --git a/source3/lib/ldb/common/ldb.c b/source3/lib/ldb/common/ldb.c
index c8aa6af..6e28528 100644
--- a/source3/lib/ldb/common/ldb.c
+++ b/source3/lib/ldb/common/ldb.c
@@ -166,8 +166,8 @@ static const struct ldb_dn *ldb_set_default_basedn(struct ldb_context *ldb)
 	}
 
 	tmp_ctx = talloc_new(ldb);
-	ret = ldb_search(ldb, ldb_dn_new(tmp_ctx), LDB_SCOPE_BASE, 
-			 "(objectClass=*)", attrs, &res);
+	ret = ldb_search(ldb, ldb, &res, ldb_dn_new(tmp_ctx), LDB_SCOPE_BASE, 
+			 attrs, "(objectClass=*)");
 	if (ret == LDB_SUCCESS) {
 		if (res->count == 1) {
 			basedn = ldb_msg_find_attr_as_dn(ldb, res->msgs[0], "defaultNamingContext");
@@ -745,12 +745,12 @@ int ldb_build_rename_req(struct ldb_request **ret_req,
   note that ldb_search() will automatically replace a NULL 'base' value with the 
   defaultNamingContext from the rootDSE if available.
 */
-int ldb_search(struct ldb_context *ldb, 
-	       const struct ldb_dn *base,
-	       enum ldb_scope scope,
-	       const char *expression,
-	       const char * const *attrs, 
-	       struct ldb_result **_res)
+static int _ldb_search(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
+			   struct ldb_result **_res,
+			   const struct ldb_dn *base,
+			   enum ldb_scope scope,
+			   const char * const *attrs, 
+			   const char *expression)
 {
 	struct ldb_request *req;
 	int ret;
@@ -758,12 +758,12 @@ int ldb_search(struct ldb_context *ldb,
 
 	*_res = NULL;
 
-	res = talloc_zero(ldb, struct ldb_result);
+	res = talloc_zero(mem_ctx, struct ldb_result);
 	if (!res) {
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
 
-	ret = ldb_build_search_req(&req, ldb, ldb,
+	ret = ldb_build_search_req(&req, ldb, mem_ctx,
 					base?base:ldb_get_default_basedn(ldb),
 	       				scope,
 					expression,
@@ -799,7 +799,7 @@ done:
  takes a memory context where results are allocated
 */
 
-int ldb_search_exp_fmt(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_result **result,
+int ldb_search(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_result **result,
                         struct ldb_dn *base, enum ldb_scope scope, const char * const *attrs,
                         const char *exp_fmt, ...)
 {
@@ -819,7 +819,7 @@ int ldb_search_exp_fmt(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
 
-	ret = ldb_search(ldb, base, scope, expression, attrs, &res);
+	ret = _ldb_search(ldb, ldb, &res, base, scope, attrs, expression);
 
 	if (ret == LDB_SUCCESS) {
 		talloc_steal(mem_ctx, res);
diff --git a/source3/lib/ldb/common/ldb_modules.c b/source3/lib/ldb/common/ldb_modules.c
index fa7f685..8699cd8 100644
--- a/source3/lib/ldb/common/ldb_modules.c
+++ b/source3/lib/ldb/common/ldb_modules.c
@@ -340,7 +340,7 @@ int ldb_load_modules(struct ldb_context *ldb, const char *options[])
 			return -1;
 		}
 
-		ret = ldb_search(ldb, mods_dn, LDB_SCOPE_BASE, "", attrs, &res);
+		ret = ldb_search(ldb, ldb, &res, mods_dn, LDB_SCOPE_BASE, attrs, "");
 		talloc_steal(mods_dn, res);
 		if (ret == LDB_SUCCESS && (res->count == 0 || res->msgs[0]->num_elements == 0)) {
 			ldb_debug(ldb, LDB_DEBUG_TRACE, "no modules required by the db\n");
diff --git a/source3/lib/ldb/examples/ldbreader.c b/source3/lib/ldb/examples/ldbreader.c
index baf0e9a..35ea03b 100644
--- a/source3/lib/ldb/examples/ldbreader.c
+++ b/source3/lib/ldb/examples/ldbreader.c
@@ -56,7 +56,6 @@ static int vprintf_fn(void *private_data, const char *fmt, ...)
 int main(int argc, const char **argv)
 {
 	struct ldb_context *ldb;
-	const char *expression = "(dn=*)";
 	struct ldb_result *resultMsg;
 	int i;
 
@@ -88,8 +87,8 @@ int main(int argc, const char **argv)
 	  quite fine grained results with the LDAP search syntax, however it is a bit
 	  confusing to start with. See RFC2254.
 	*/
-	if (LDB_SUCCESS != ldb_search(ldb, NULL, LDB_SCOPE_DEFAULT,
-				      expression, NULL, &resultMsg) ) {
+	if (LDB_SUCCESS != ldb_search(ldb, ldb, &resultMsg, NULL, LDB_SCOPE_DEFAULT,
+				      NULL, "(dn=*)") ) {
 		printf("Problem in search\n");
 		exit(-1);
 	}
diff --git a/source3/lib/ldb/include/ldb.h b/source3/lib/ldb/include/ldb.h
index 3891c1c..113652a 100644
--- a/source3/lib/ldb/include/ldb.h
+++ b/source3/lib/ldb/include/ldb.h
@@ -987,18 +987,7 @@ int ldb_build_rename_req(struct ldb_request **ret_req,
 
   \note use talloc_free() to free the ldb_result returned
 */
-int ldb_search(struct ldb_context *ldb, 
-	       const struct ldb_dn *base,
-	       enum ldb_scope scope,
-	       const char *expression,
-	       const char * const *attrs, struct ldb_result **_res);
-
-/*
- * a useful search function where you can easily define the expression and
- * that takes a memory context where results are allocated
-*/
-
-int ldb_search_exp_fmt(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
+int ldb_search(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
 		       struct ldb_result **result, struct ldb_dn *base,
 		       enum ldb_scope scope, const char * const *attrs,
 		       const char *exp_fmt, ...);
diff --git a/source3/lib/ldb/modules/ldb_map.c b/source3/lib/ldb/modules/ldb_map.c
index 54e1758..bda6cdc 100644
--- a/source3/lib/ldb/modules/ldb_map.c
+++ b/source3/lib/ldb/modules/ldb_map.c
@@ -1199,7 +1199,7 @@ static int map_init_dns(struct ldb_module *module, struct ldb_map_context *data,
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
 
-	ret = ldb_search(module->ldb, dn, LDB_SCOPE_BASE, NULL, attrs, &res);
+	ret = ldb_search(module->ldb, module->ldb, &res, dn, LDB_SCOPE_BASE, attrs, NULL);
 	talloc_free(dn);
 	if (ret != LDB_SUCCESS) {
 		return ret;
diff --git a/source3/lib/ldb/nssldb/ldb-grp.c b/source3/lib/ldb/nssldb/ldb-grp.c
index 71e27a9..82598e1 100644
--- a/source3/lib/ldb/nssldb/ldb-grp.c
+++ b/source3/lib/ldb/nssldb/ldb-grp.c
@@ -59,12 +59,12 @@ NSS_STATUS _nss_ldb_setgrent(void)
 		_ldb_nss_ctx->gr_res = NULL;
 	}
 
-	ret = ldb_search(_ldb_nss_ctx->ldb,
+	ret = ldb_search(_ldb_nss_ctx->ldb, _ldb_nss_ctx->ldb,
+			 &_ldb_nss_ctx->gr_res,
 			 _ldb_nss_ctx->base,
-			 LDB_SCOPE_SUBTREE,
-			 _LDB_NSS_GRENT_FILTER,
+			 LDB_SCOPE_SUBTREE, 
 			 _ldb_nss_gr_attrs,
-			 &_ldb_nss_ctx->gr_res);
+			 _LDB_NSS_GRENT_FILTER);
 	if (ret != LDB_SUCCESS) {
 		return NSS_STATUS_UNAVAIL;
 	}
@@ -151,7 +151,6 @@ NSS_STATUS _nss_ldb_getgrent_r(struct group *result_buf, char *buffer, size_t bu
 NSS_STATUS _nss_ldb_getgrnam_r(const char *name, struct group *result_buf, char *buffer, size_t buflen, int *errnop)
 {
 	int ret;
-	char *filter;
 	TALLOC_CTX *ctx;
 	struct ldb_result *gr_res;
 	struct ldb_result *mem_res;
@@ -167,22 +166,12 @@ NSS_STATUS _nss_ldb_getgrnam_r(const char *name, struct group *result_buf, char
 		return NSS_STATUS_UNAVAIL;
 	}
 
-	/* build the filter for this uid */
-	filter = talloc_asprintf(ctx, _LDB_NSS_GRNAM_FILTER, name);
-	if (filter == NULL) {
-		/* this is a fatal error */
-		*errnop = errno = ENOMEM;
-		ret = NSS_STATUS_UNAVAIL;
-		goto done;
-	}
-
 	/* search the entry */
-	ret = ldb_search(_ldb_nss_ctx->ldb,
+	ret = ldb_search(_ldb_nss_ctx->ldb, _ldb_nss_ctx->ldb, &gr_res,
 			 _ldb_nss_ctx->base,
 			 LDB_SCOPE_SUBTREE,
-			 filter,
 			 _ldb_nss_gr_attrs,
-			 &gr_res);
+			 _LDB_NSS_GRNAM_FILTER, name);
 	if (ret != LDB_SUCCESS) {
 		/* this is a fatal error */
 		*errnop = errno = ENOENT;
@@ -243,7 +232,6 @@ done:
 NSS_STATUS _nss_ldb_getgrgid_r(gid_t gid, struct group *result_buf, char *buffer, size_t buflen, int *errnop)
 {
 	int ret;
-	char *filter;
 	TALLOC_CTX *ctx;
 	struct ldb_result *gr_res;
 	struct ldb_result *mem_res;
@@ -264,22 +252,12 @@ NSS_STATUS _nss_ldb_getgrgid_r(gid_t gid, struct group *result_buf, char *buffer
 		return NSS_STATUS_UNAVAIL;
 	}
 
-	/* build the filter for this uid */
-	filter = talloc_asprintf(ctx, _LDB_NSS_GRGID_FILTER, gid);
-	if (filter == NULL) {
-		/* this is a fatal error */
-		*errnop = errno = ENOMEM;
-		ret = NSS_STATUS_UNAVAIL;
-		goto done;
-	}
-
 	/* search the entry */
-	ret = ldb_search(_ldb_nss_ctx->ldb,
+	ret = ldb_search(_ldb_nss_ctx->ldb, _ldb_nss_ctx->ldb, &gr_res,
 			 _ldb_nss_ctx->base,
 			 LDB_SCOPE_SUBTREE,
-			 filter,
 			 _ldb_nss_gr_attrs,
-			 &gr_res);
+			 _LDB_NSS_GRGID_FILTER, gid);
 	if (ret != LDB_SUCCESS) {
 		/* this is a fatal error */
 		*errnop = errno = ENOENT;
@@ -340,7 +318,6 @@ done:
 NSS_STATUS _nss_ldb_initgroups_dyn(const char *user, gid_t group, long int *start, long int *size, gid_t **groups, long int limit, int *errnop)
 {
 	int ret;
-	char *filter;
 	const char * attrs[] = { "uidNumber", "gidNumber", NULL };
 	struct ldb_result *uid_res;
 	struct ldb_result *mem_res;
@@ -356,22 +333,12 @@ NSS_STATUS _nss_ldb_initgroups_dyn(const char *user, gid_t group, long int *star
 		return NSS_STATUS_UNAVAIL;
 	}
 
-	/* build the filter for this name */
-	filter = talloc_asprintf(mem_res, _LDB_NSS_PWNAM_FILTER, user);
-	if (filter == NULL) {
-		/* this is a fatal error */
-		*errnop = errno = ENOENT;
-		ret = NSS_STATUS_UNAVAIL;
-		goto done;
-	}
-
 	/* search the entry */
-	ret = ldb_search(_ldb_nss_ctx->ldb,
+	ret = ldb_search(_ldb_nss_ctx->ldb, _ldb_nss_ctx->ldb, &uid_res,
 			 _ldb_nss_ctx->base,
 			 LDB_SCOPE_SUBTREE,
-			 filter,
 			 attrs,
-			 &uid_res);
+			 _LDB_NSS_PWNAM_FILTER, user);
 	if (ret != LDB_SUCCESS) {
 		/* this is a fatal error */
 		*errnop = errno = ENOENT;
diff --git a/source3/lib/ldb/nssldb/ldb-pwd.c b/source3/lib/ldb/nssldb/ldb-pwd.c
index 44b0ab2..2e7ec45 100644
--- a/source3/lib/ldb/nssldb/ldb-pwd.c
+++ b/source3/lib/ldb/nssldb/ldb-pwd.c
@@ -46,12 +46,12 @@ NSS_STATUS _nss_ldb_setpwent(void)
 		_ldb_nss_ctx->pw_res = NULL;
 	}
 
-	ret = ldb_search(_ldb_nss_ctx->ldb,
+	ret = ldb_search(_ldb_nss_ctx->ldb, _ldb_nss_ctx->ldb, 
+					 &_ldb_nss_ctx->pw_res,
 			 _ldb_nss_ctx->base,
 			 LDB_SCOPE_SUBTREE,
-			 _LDB_NSS_PWENT_FILTER,
 			 _ldb_nss_pw_attrs,
-			 &_ldb_nss_ctx->pw_res);
+			 _LDB_NSS_PWENT_FILTER);
 	if (ret != LDB_SUCCESS) {
 		return NSS_STATUS_UNAVAIL;
 	}
@@ -113,7 +113,6 @@ NSS_STATUS _nss_ldb_getpwent_r(struct passwd *result_buf,
 NSS_STATUS _nss_ldb_getpwuid_r(uid_t uid, struct passwd *result_buf, char *buffer, size_t buflen, int *errnop)
 {
 	int ret;
-	char *filter;
 	struct ldb_result *res;
 
 	if (uid == 0) { /* we don't serve root uid by policy */
@@ -126,22 +125,12 @@ NSS_STATUS _nss_ldb_getpwuid_r(uid_t uid, struct passwd *result_buf, char *buffe
 		return ret;
 	}
 
-	/* build the filter for this uid */
-	filter = talloc_asprintf(_ldb_nss_ctx, _LDB_NSS_PWUID_FILTER, uid);
-	if (filter == NULL) {
-		/* this is a fatal error */
-		*errnop = errno = ENOMEM;
-		ret = NSS_STATUS_UNAVAIL;
-		goto done;
-	}
-
 	/* search the entry */
-	ret = ldb_search(_ldb_nss_ctx->ldb,
+	ret = ldb_search(_ldb_nss_ctx->ldb, _ldb_nss_ctx->ldb, &res, 
 			 _ldb_nss_ctx->base,
 			 LDB_SCOPE_SUBTREE,
-			 filter,
 			 _ldb_nss_pw_attrs,
-			 &res);
+			 _LDB_NSS_PWUID_FILTER, uid);
 	if (ret != LDB_SUCCESS) {
 		/* this is a fatal error */
 		*errnop = errno = ENOENT;
@@ -171,7 +160,6 @@ NSS_STATUS _nss_ldb_getpwuid_r(uid_t uid, struct passwd *result_buf, char *buffe
 				   res->msgs[0]);
 
 done:
-	talloc_free(filter);
 	talloc_free(res);
 	return ret;
 }
@@ -179,7 +167,6 @@ done:
 NSS_STATUS _nss_ldb_getpwnam_r(const char *name, struct passwd *result_buf, char *buffer, size_t buflen, int *errnop)
 {
 	int ret;
-	char *filter;
 	struct ldb_result *res;
 
 	ret = _ldb_nss_init();
@@ -187,22 +174,12 @@ NSS_STATUS _nss_ldb_getpwnam_r(const char *name, struct passwd *result_buf, char
 		return ret;
 	}
 
-	/* build the filter for this name */
-	filter = talloc_asprintf(_ldb_nss_ctx, _LDB_NSS_PWNAM_FILTER, name);
-	if (filter == NULL) {
-		/* this is a fatal error */
-		*errnop = errno = ENOENT;
-		ret = NSS_STATUS_UNAVAIL;
-		goto done;
-	}
-
 	/* search the entry */
-	ret = ldb_search(_ldb_nss_ctx->ldb,
+	ret = ldb_search(_ldb_nss_ctx->ldb, _ldb_nss_ctx->ldb, &res,
 			 _ldb_nss_ctx->base,
 			 LDB_SCOPE_SUBTREE,
-			 filter,
 			 _ldb_nss_pw_attrs,
-			 &res);
+			 _LDB_NSS_PWNAM_FILTER, name);
 	if (ret != LDB_SUCCESS) {
 		/* this is a fatal error */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list