[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