[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-2230-g6372bd6

Volker Lendecke vlendec at samba.org
Wed Jun 10 21:58:32 GMT 2009


The branch, master has been updated
       via  6372bd695d96d2bfa8a8f902dd0e3830f7b3c2e6 (commit)
       via  baa47dd27842a2a5ec19adc5bbbef960845f2995 (commit)
      from  96df53fdc72a36cea849572c8386b77611c0f380 (commit)

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


- Log -----------------------------------------------------------------
commit 6372bd695d96d2bfa8a8f902dd0e3830f7b3c2e6
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jun 10 23:56:51 2009 +0200

    Implement pdb_ads_set_aliasinfo

commit baa47dd27842a2a5ec19adc5bbbef960845f2995
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jun 10 23:56:20 2009 +0200

    pdb_default_aliasinfo is just fine for pdb_ads right now

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

Summary of changes:
 source3/passdb/pdb_ads.c |   78 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 69 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/passdb/pdb_ads.c b/source3/passdb/pdb_ads.c
index 927c1aa..8d7c215 100644
--- a/source3/passdb/pdb_ads.c
+++ b/source3/passdb/pdb_ads.c
@@ -1107,18 +1107,78 @@ static NTSTATUS pdb_ads_delete_alias(struct pdb_methods *m,
 	return NT_STATUS_OK;
 }
 
-static NTSTATUS pdb_ads_get_aliasinfo(struct pdb_methods *m,
-				      const DOM_SID *sid,
-				      struct acct_info *info)
-{
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
 static NTSTATUS pdb_ads_set_aliasinfo(struct pdb_methods *m,
 				      const DOM_SID *sid,
 				      struct acct_info *info)
 {
-	return NT_STATUS_NOT_IMPLEMENTED;
+	struct pdb_ads_state *state = talloc_get_type_abort(
+		m->private_data, struct pdb_ads_state);
+	const char *attrs[3] = { "objectSid", "description",
+				 "samAccountName" };
+	struct tldap_message **msg;
+	char *sidstr, *dn;
+	int rc;
+	struct tldap_mod *mods;
+	int num_mods;
+	bool ok;
+
+	sidstr = sid_binstring(talloc_tos(), sid);
+	NT_STATUS_HAVE_NO_MEMORY(sidstr);
+
+	rc = tldap_search_fmt(state->ld, state->domaindn, TLDAP_SCOPE_SUB,
+			      attrs, ARRAY_SIZE(attrs), 0, talloc_tos(),
+			      &msg, "(&(objectSid=%s)(objectclass=group)"
+			      "(|(grouptype=%d)(grouptype=%d)))",
+			      sidstr, GTYPE_SECURITY_BUILTIN_LOCAL_GROUP,
+			      GTYPE_SECURITY_DOMAIN_LOCAL_GROUP);
+	TALLOC_FREE(sidstr);
+	if (rc != TLDAP_SUCCESS) {
+		DEBUG(10, ("ldap_search failed %s\n",
+			   tldap_errstr(debug_ctx(), state->ld, rc)));
+		return NT_STATUS_LDAP(rc);
+	}
+	switch talloc_array_length(msg) {
+	case 0:
+		return NT_STATUS_NO_SUCH_ALIAS;
+	case 1:
+		break;
+	default:
+		return NT_STATUS_INTERNAL_DB_CORRUPTION;
+	}
+
+	if (!tldap_entry_dn(msg[0], &dn)) {
+		TALLOC_FREE(msg);
+		return NT_STATUS_INTERNAL_DB_CORRUPTION;
+	}
+
+	mods = NULL;
+	num_mods = 0;
+	ok = true;
+
+	ok &= tldap_make_mod_fmt(
+		msg[0], msg, &num_mods, &mods, "description",
+		"%s", info->acct_desc);
+	ok &= tldap_make_mod_fmt(
+		msg[0], msg, &num_mods, &mods, "samAccountName",
+		"%s", info->acct_name);
+	if (!ok) {
+		TALLOC_FREE(msg);
+		return NT_STATUS_NO_MEMORY;
+	}
+	if (num_mods == 0) {
+		/* no change */
+		TALLOC_FREE(msg);
+		return NT_STATUS_OK;
+	}
+
+	rc = tldap_modify(state->ld, dn, num_mods, mods, NULL, NULL);
+	TALLOC_FREE(msg);
+	if (rc != TLDAP_SUCCESS) {
+		DEBUG(10, ("ldap_modify failed: %s\n",
+			   tldap_errstr(debug_ctx(), state->ld, rc)));
+		return NT_STATUS_LDAP(rc);
+	}
+	return NT_STATUS_OK;
 }
 
 static NTSTATUS pdb_ads_sid2dn(struct pdb_ads_state *state,
@@ -1767,7 +1827,7 @@ static void pdb_ads_init_methods(struct pdb_methods *m)
 	m->del_groupmem = pdb_ads_del_groupmem;
 	m->create_alias = pdb_ads_create_alias;
 	m->delete_alias = pdb_ads_delete_alias;
-	m->get_aliasinfo = pdb_ads_get_aliasinfo;
+	m->get_aliasinfo = pdb_default_get_aliasinfo;
 	m->set_aliasinfo = pdb_ads_set_aliasinfo;
 	m->add_aliasmem = pdb_ads_add_aliasmem;
 	m->del_aliasmem = pdb_ads_del_aliasmem;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list