mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
s4:templates - Remove the latest relics (in "dcesrv_lsa_CreateSecret")
This commit is contained in:
parent
fb914640ad
commit
076ca26cfe
@ -113,110 +113,6 @@ struct ldb_context *samdb_connect(TALLOC_CTX *mem_ctx,
|
||||
return ldb;
|
||||
}
|
||||
|
||||
/*
|
||||
copy from a template record to a message
|
||||
*/
|
||||
int samdb_copy_template(struct ldb_context *ldb,
|
||||
struct ldb_message *msg, const char *name,
|
||||
const char **errstring)
|
||||
{
|
||||
struct ldb_result *res;
|
||||
struct ldb_message *t;
|
||||
int ret, i, j;
|
||||
struct ldb_context *templates_ldb;
|
||||
char *templates_ldb_path;
|
||||
struct ldb_dn *basedn;
|
||||
struct tevent_context *event_ctx;
|
||||
struct loadparm_context *lp_ctx;
|
||||
|
||||
templates_ldb = talloc_get_type(ldb_get_opaque(ldb, "templates_ldb"), struct ldb_context);
|
||||
|
||||
if (!templates_ldb) {
|
||||
templates_ldb_path = samdb_relative_path(ldb,
|
||||
msg,
|
||||
"templates.ldb");
|
||||
if (!templates_ldb_path) {
|
||||
*errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: Failed to contruct path for template db");
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
event_ctx = ldb_get_event_context(ldb);
|
||||
lp_ctx = (struct loadparm_context *)ldb_get_opaque(ldb, "loadparm");
|
||||
|
||||
/* FIXME: need to remove this wehn we finally pass the event
|
||||
* context around in ldb */
|
||||
if (event_ctx == NULL) {
|
||||
event_ctx = s4_event_context_init(templates_ldb);
|
||||
}
|
||||
|
||||
templates_ldb = ldb_wrap_connect(ldb, event_ctx, lp_ctx,
|
||||
templates_ldb_path, NULL,
|
||||
NULL, 0, NULL);
|
||||
talloc_free(templates_ldb_path);
|
||||
if (!templates_ldb) {
|
||||
*errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: Failed to connect to templates db at: %s",
|
||||
templates_ldb_path);
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
ret = ldb_set_opaque(ldb, "templates_ldb", templates_ldb);
|
||||
if (ret != LDB_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
*errstring = NULL;
|
||||
|
||||
basedn = ldb_dn_new(templates_ldb, ldb, "cn=Templates");
|
||||
if (!ldb_dn_add_child_fmt(basedn, "CN=Template%s", name)) {
|
||||
talloc_free(basedn);
|
||||
*errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: Failed to contruct DN for template '%s'",
|
||||
name);
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
/* pull the template record */
|
||||
ret = ldb_search(templates_ldb, msg, &res, basedn, LDB_SCOPE_BASE, NULL, "distinguishedName=*");
|
||||
talloc_free(basedn);
|
||||
if (ret != LDB_SUCCESS) {
|
||||
*errstring = talloc_steal(msg, ldb_errstring(templates_ldb));
|
||||
return ret;
|
||||
}
|
||||
if (res->count != 1) {
|
||||
*errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: template '%s' matched %d records, expected 1",
|
||||
name,
|
||||
res->count);
|
||||
talloc_free(res);
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
t = res->msgs[0];
|
||||
|
||||
for (i = 0; i < t->num_elements; i++) {
|
||||
struct ldb_message_element *el = &t->elements[i];
|
||||
/* some elements should not be copied from the template */
|
||||
if (ldb_attr_cmp(el->name, "cn") == 0 ||
|
||||
ldb_attr_cmp(el->name, "name") == 0 ||
|
||||
ldb_attr_cmp(el->name, "objectClass") == 0 ||
|
||||
ldb_attr_cmp(el->name, "sAMAccountName") == 0 ||
|
||||
ldb_attr_cmp(el->name, "distinguishedName") == 0 ||
|
||||
ldb_attr_cmp(el->name, "objectGUID") == 0) {
|
||||
continue;
|
||||
}
|
||||
for (j = 0; j < el->num_values; j++) {
|
||||
ret = samdb_find_or_add_attribute(ldb, msg, el->name,
|
||||
(char *)el->values[j].data);
|
||||
if (ret) {
|
||||
*errstring = talloc_asprintf(msg, "Adding attribute %s failed.", el->name);
|
||||
talloc_free(res);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
talloc_free(res);
|
||||
|
||||
return LDB_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
Create the SID list for this user.
|
||||
|
@ -2129,7 +2129,6 @@ static NTSTATUS dcesrv_lsa_CreateSecret(struct dcesrv_call_state *dce_call, TALL
|
||||
struct lsa_secret_state *secret_state;
|
||||
struct dcesrv_handle *handle;
|
||||
struct ldb_message **msgs, *msg;
|
||||
const char *errstr;
|
||||
const char *attrs[] = {
|
||||
NULL
|
||||
};
|
||||
@ -2233,15 +2232,6 @@ static NTSTATUS dcesrv_lsa_CreateSecret(struct dcesrv_call_state *dce_call, TALL
|
||||
samdb_msg_add_string(secret_state->sam_ldb, mem_ctx, msg, "cn", name);
|
||||
}
|
||||
|
||||
/* pull in all the template attributes. Note this is always from the global samdb */
|
||||
ret = samdb_copy_template(secret_state->policy->sam_ldb, msg,
|
||||
"secret", &errstr);
|
||||
if (ret != 0) {
|
||||
DEBUG(0,("Failed to load TemplateSecret from samdb: %s\n",
|
||||
errstr));
|
||||
return NT_STATUS_INTERNAL_DB_CORRUPTION;
|
||||
}
|
||||
|
||||
samdb_msg_add_string(secret_state->sam_ldb, mem_ctx, msg, "objectClass", "secret");
|
||||
|
||||
secret_state->secret_dn = talloc_reference(secret_state, msg->dn);
|
||||
|
Loading…
x
Reference in New Issue
Block a user