1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-04 17:47:26 +03:00

r626: make the code a bit more readable

metze
(This used to be commit 81b94718e4145a53947d401c4b4b88b71c71e4a4)
This commit is contained in:
Stefan Metzmacher 2004-05-10 12:37:06 +00:00 committed by Gerald (Jerry) Carter
parent 5afbecdc2e
commit 28cfc3c7d7

View File

@ -56,7 +56,7 @@ struct samr_domain_state {
uint32 access_mask;
const char *domain_sid;
const char *domain_name;
const char *basedn;
const char *domain_dn;
};
/*
@ -69,19 +69,19 @@ struct samr_account_state {
uint32 access_mask;
const char *account_sid;
const char *account_name;
const char *basedn;
const char *account_dn;
};
/*
destroy connection state
*/
static void samr_Connect_close(struct samr_connect_state *state)
static void samr_Connect_close(struct samr_connect_state *c_state)
{
state->reference_count--;
if (state->reference_count == 0) {
samdb_close(state->sam_ctx);
talloc_destroy(state->mem_ctx);
c_state->reference_count--;
if (c_state->reference_count == 0) {
samdb_close(c_state->sam_ctx);
talloc_destroy(c_state->mem_ctx);
}
}
@ -90,8 +90,8 @@ static void samr_Connect_close(struct samr_connect_state *state)
*/
static void samr_Connect_destroy(struct dcesrv_connection *conn, struct dcesrv_handle *h)
{
struct samr_connect_state *state = h->data;
samr_Connect_close(state);
struct samr_connect_state *c_state = h->data;
samr_Connect_close(c_state);
}
/*
@ -102,7 +102,7 @@ static void samr_Connect_destroy(struct dcesrv_connection *conn, struct dcesrv_h
static NTSTATUS samr_Connect(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct samr_Connect *r)
{
struct samr_connect_state *state;
struct samr_connect_state *c_state;
struct dcesrv_handle *handle;
TALLOC_CTX *connect_mem_ctx;
@ -113,30 +113,30 @@ static NTSTATUS samr_Connect(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem
return NT_STATUS_NO_MEMORY;
}
state = talloc_p(connect_mem_ctx, struct samr_connect_state);
if (!state) {
c_state = talloc_p(connect_mem_ctx, struct samr_connect_state);
if (!c_state) {
return NT_STATUS_NO_MEMORY;
}
state->mem_ctx = connect_mem_ctx;
c_state->mem_ctx = connect_mem_ctx;
/* make sure the sam database is accessible */
state->sam_ctx = samdb_connect();
if (state->sam_ctx == NULL) {
talloc_destroy(state->mem_ctx);
c_state->sam_ctx = samdb_connect();
if (c_state->sam_ctx == NULL) {
talloc_destroy(c_state->mem_ctx);
return NT_STATUS_INVALID_SYSTEM_SERVICE;
}
handle = dcesrv_handle_new(dce_call->conn, SAMR_HANDLE_CONNECT);
if (!handle) {
talloc_destroy(state->mem_ctx);
talloc_destroy(c_state->mem_ctx);
return NT_STATUS_NO_MEMORY;
}
handle->data = state;
handle->data = c_state;
handle->destroy = samr_Connect_destroy;
state->reference_count = 1;
state->access_mask = r->in.access_mask;
c_state->reference_count = 1;
c_state->access_mask = r->in.access_mask;
*r->out.handle = handle->wire_handle;
return NT_STATUS_OK;
@ -207,7 +207,7 @@ static NTSTATUS samr_Shutdown(struct dcesrv_call_state *dce_call, TALLOC_CTX *me
static NTSTATUS samr_LookupDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct samr_LookupDomain *r)
{
struct samr_connect_state *state;
struct samr_connect_state *c_state;
struct dcesrv_handle *h;
struct dom_sid2 *sid;
const char *sidstr;
@ -216,13 +216,13 @@ static NTSTATUS samr_LookupDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_CONNECT);
state = h->data;
c_state = h->data;
if (r->in.domain->name == NULL) {
return NT_STATUS_INVALID_PARAMETER;
}
sidstr = samdb_search_string(state->sam_ctx,
sidstr = samdb_search_string(c_state->sam_ctx,
mem_ctx, NULL, "objectSid",
"(&(name=%s)(objectclass=domain))",
r->in.domain->name);
@ -251,7 +251,7 @@ static NTSTATUS samr_LookupDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX
static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct samr_EnumDomains *r)
{
struct samr_connect_state *state;
struct samr_connect_state *c_state;
struct dcesrv_handle *h;
struct samr_SamArray *array;
const char **domains;
@ -263,9 +263,9 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_CONNECT);
state = h->data;
c_state = h->data;
count = samdb_search_string_multiple(state->sam_ctx,
count = samdb_search_string_multiple(c_state->sam_ctx,
mem_ctx, NULL, &domains,
"name", "(objectclass=domain)");
if (count == -1) {
@ -312,12 +312,12 @@ static NTSTATUS samr_EnumDomains(struct dcesrv_call_state *dce_call, TALLOC_CTX
close an open domain context
*/
static void samr_Domain_close(struct dcesrv_connection *conn,
struct samr_domain_state *state)
struct samr_domain_state *d_state)
{
state->reference_count--;
if (state->reference_count == 0) {
samr_Connect_close(state->connect_state);
talloc_destroy(state->mem_ctx);
d_state->reference_count--;
if (d_state->reference_count == 0) {
samr_Connect_close(d_state->connect_state);
talloc_destroy(d_state->mem_ctx);
}
}
@ -326,8 +326,8 @@ static void samr_Domain_close(struct dcesrv_connection *conn,
*/
static void samr_Domain_destroy(struct dcesrv_connection *conn, struct dcesrv_handle *h)
{
struct samr_domain_state *state = h->data;
samr_Domain_close(conn, state);
struct samr_domain_state *d_state = h->data;
samr_Domain_close(conn, d_state);
}
/*
@ -339,7 +339,7 @@ static NTSTATUS samr_OpenDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *
struct dcesrv_handle *h_conn, *h_domain;
const char *sidstr, *domain_name;
struct samr_connect_state *c_state;
struct samr_domain_state *state;
struct samr_domain_state *d_state;
TALLOC_CTX *mem_ctx2;
const char * const attrs[2] = { "name", NULL};
struct ldb_message **msgs;
@ -378,24 +378,24 @@ static NTSTATUS samr_OpenDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *
return NT_STATUS_NO_MEMORY;
}
state = talloc_p(mem_ctx2, struct samr_domain_state);
if (!state) {
d_state = talloc_p(mem_ctx2, struct samr_domain_state);
if (!d_state) {
talloc_destroy(mem_ctx2);
return NT_STATUS_NO_MEMORY;
}
state->reference_count = 1;
state->connect_state = c_state;
state->sam_ctx = c_state->sam_ctx;
state->mem_ctx = mem_ctx2;
state->domain_sid = talloc_strdup(mem_ctx2, sidstr);
state->domain_name = talloc_strdup(mem_ctx2, domain_name);
state->basedn = talloc_strdup(mem_ctx2, msgs[0]->dn);
if (!state->domain_sid || !state->domain_name || !state->basedn) {
d_state->reference_count = 1;
d_state->connect_state = c_state;
d_state->sam_ctx = c_state->sam_ctx;
d_state->mem_ctx = mem_ctx2;
d_state->domain_sid = talloc_strdup(mem_ctx2, sidstr);
d_state->domain_name = talloc_strdup(mem_ctx2, domain_name);
d_state->domain_dn = talloc_strdup(mem_ctx2, msgs[0]->dn);
if (!d_state->domain_sid || !d_state->domain_name || !d_state->domain_dn) {
talloc_destroy(mem_ctx2);
return NT_STATUS_NO_MEMORY;
}
state->access_mask = r->in.access_mask;
d_state->access_mask = r->in.access_mask;
h_domain = dcesrv_handle_new(dce_call->conn, SAMR_HANDLE_DOMAIN);
if (!h_domain) {
@ -404,7 +404,7 @@ static NTSTATUS samr_OpenDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *
}
c_state->reference_count++;
h_domain->data = state;
h_domain->data = d_state;
h_domain->destroy = samr_Domain_destroy;
*r->out.domain_handle = h_domain->wire_handle;
@ -436,9 +436,9 @@ static NTSTATUS samr_SetDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CT
*/
static void samr_Account_destroy(struct dcesrv_connection *conn, struct dcesrv_handle *h)
{
struct samr_account_state *state = h->data;
samr_Domain_close(conn, state->domain_state);
talloc_destroy(state->mem_ctx);
struct samr_account_state *a_state = h->data;
samr_Domain_close(conn, a_state->domain_state);
talloc_destroy(a_state->mem_ctx);
}
/*
@ -448,7 +448,7 @@ static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLO
struct samr_CreateDomainGroup *r)
{
struct samr_domain_state *d_state;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct dcesrv_handle *h;
const char *name;
struct ldb_message msg;
@ -474,7 +474,7 @@ static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLO
}
/* check if the group already exists */
name = samdb_search_string(d_state->sam_ctx, mem_ctx, d_state->basedn,
name = samdb_search_string(d_state->sam_ctx, mem_ctx, d_state->domain_dn,
"sAMAccountName",
"(&(sAMAccountName=%s)(objectclass=group))",
groupname);
@ -494,7 +494,7 @@ static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLO
/* allocate a rid */
status = samdb_allocate_next_id(d_state->sam_ctx, mem_ctx,
d_state->basedn, "nextRid", &rid);
d_state->domain_dn, "nextRid", &rid);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@ -507,7 +507,7 @@ static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLO
/* add core elements to the ldb_message for the user */
msg.dn = talloc_asprintf(mem_ctx, "CN=%s,CN=Users,%s", groupname,
d_state->basedn);
d_state->domain_dn);
if (!msg.dn) {
return NT_STATUS_NO_MEMORY;
}
@ -539,18 +539,18 @@ static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLO
return NT_STATUS_NO_MEMORY;
}
state = talloc_p(mem_ctx2, struct samr_account_state);
if (!state) {
a_state = talloc_p(mem_ctx2, struct samr_account_state);
if (!a_state) {
return NT_STATUS_NO_MEMORY;
}
state->mem_ctx = mem_ctx2;
state->sam_ctx = d_state->sam_ctx;
state->access_mask = r->in.access_mask;
state->domain_state = d_state;
state->basedn = talloc_steal(mem_ctx, mem_ctx2, msg.dn);
state->account_sid = talloc_strdup(mem_ctx2, sidstr);
state->account_name = talloc_strdup(mem_ctx2, groupname);
if (!state->account_name || !state->account_sid) {
a_state->mem_ctx = mem_ctx2;
a_state->sam_ctx = d_state->sam_ctx;
a_state->access_mask = r->in.access_mask;
a_state->domain_state = d_state;
a_state->account_dn = talloc_steal(mem_ctx, mem_ctx2, msg.dn);
a_state->account_sid = talloc_strdup(mem_ctx2, sidstr);
a_state->account_name = talloc_strdup(mem_ctx2, groupname);
if (!a_state->account_name || !a_state->account_sid) {
return NT_STATUS_NO_MEMORY;
}
@ -560,7 +560,7 @@ static NTSTATUS samr_CreateDomainGroup(struct dcesrv_call_state *dce_call, TALLO
return NT_STATUS_NO_MEMORY;
}
g_handle->data = state;
g_handle->data = a_state;
g_handle->destroy = samr_Account_destroy;
/* the domain state is in use one more time */
@ -592,7 +592,7 @@ static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX
struct samr_CreateUser2 *r)
{
struct samr_domain_state *d_state;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct dcesrv_handle *h;
const char *name;
struct ldb_message msg;
@ -619,7 +619,7 @@ static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX
}
/* check if the user already exists */
name = samdb_search_string(d_state->sam_ctx, mem_ctx, d_state->basedn,
name = samdb_search_string(d_state->sam_ctx, mem_ctx, d_state->domain_dn,
"sAMAccountName",
"(&(sAMAccountName=%s)(objectclass=user))", username);
if (name != NULL) {
@ -638,7 +638,7 @@ static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX
/* allocate a rid */
status = samdb_allocate_next_id(d_state->sam_ctx, mem_ctx,
d_state->basedn, "nextRid", &rid);
d_state->domain_dn, "nextRid", &rid);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@ -650,7 +650,7 @@ static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX
}
/* add core elements to the ldb_message for the user */
msg.dn = talloc_asprintf(mem_ctx, "CN=%s,CN=Users,%s", username, d_state->basedn);
msg.dn = talloc_asprintf(mem_ctx, "CN=%s,CN=Users,%s", username, d_state->domain_dn);
if (!msg.dn) {
return NT_STATUS_NO_MEMORY;
}
@ -675,18 +675,18 @@ static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX
return NT_STATUS_NO_MEMORY;
}
state = talloc_p(mem_ctx2, struct samr_account_state);
if (!state) {
a_state = talloc_p(mem_ctx2, struct samr_account_state);
if (!a_state) {
return NT_STATUS_NO_MEMORY;
}
state->mem_ctx = mem_ctx2;
state->sam_ctx = d_state->sam_ctx;
state->access_mask = r->in.access_mask;
state->domain_state = d_state;
state->basedn = talloc_steal(mem_ctx, mem_ctx2, msg.dn);
state->account_sid = talloc_strdup(mem_ctx2, sidstr);
state->account_name = talloc_strdup(mem_ctx2, username);
if (!state->account_name || !state->account_sid) {
a_state->mem_ctx = mem_ctx2;
a_state->sam_ctx = d_state->sam_ctx;
a_state->access_mask = r->in.access_mask;
a_state->domain_state = d_state;
a_state->account_dn = talloc_steal(mem_ctx, mem_ctx2, msg.dn);
a_state->account_sid = talloc_strdup(mem_ctx2, sidstr);
a_state->account_name = talloc_strdup(mem_ctx2, username);
if (!a_state->account_name || !a_state->account_sid) {
return NT_STATUS_NO_MEMORY;
}
@ -696,7 +696,7 @@ static NTSTATUS samr_CreateUser2(struct dcesrv_call_state *dce_call, TALLOC_CTX
return NT_STATUS_NO_MEMORY;
}
u_handle->data = state;
u_handle->data = a_state;
u_handle->destroy = samr_Account_destroy;
/* the domain state is in use one more time */
@ -747,7 +747,7 @@ static NTSTATUS samr_EnumDomainUsers(struct dcesrv_call_state *dce_call, TALLOC_
struct samr_EnumDomainUsers *r)
{
struct dcesrv_handle *h;
struct samr_domain_state *state;
struct samr_domain_state *d_state;
struct ldb_message **res;
int count, i, first;
struct samr_SamEntry *entries;
@ -759,11 +759,11 @@ static NTSTATUS samr_EnumDomainUsers(struct dcesrv_call_state *dce_call, TALLOC_
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_DOMAIN);
state = h->data;
d_state = h->data;
/* search for all users in this domain. This could possibly be cached and
resumed based on resume_key */
count = samdb_search(state->sam_ctx, mem_ctx, state->basedn, &res, attrs,
count = samdb_search(d_state->sam_ctx, mem_ctx, d_state->domain_dn, &res, attrs,
"objectclass=user");
if (count == -1) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;
@ -855,7 +855,7 @@ static NTSTATUS samr_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX
struct samr_LookupNames *r)
{
struct dcesrv_handle *h;
struct samr_domain_state *state;
struct samr_domain_state *d_state;
int i;
NTSTATUS status = NT_STATUS_OK;
const char * const attrs[] = { "sAMAccountType", "objectSid", NULL };
@ -866,7 +866,7 @@ static NTSTATUS samr_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_DOMAIN);
state = h->data;
d_state = h->data;
if (r->in.num_names == 0) {
return NT_STATUS_OK;
@ -889,7 +889,7 @@ static NTSTATUS samr_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX
r->out.rids.ids[i] = 0;
r->out.types.ids[i] = SID_NAME_UNKNOWN;
count = samdb_search(state->sam_ctx, mem_ctx, state->basedn, &res, attrs,
count = samdb_search(d_state->sam_ctx, mem_ctx, d_state->domain_dn, &res, attrs,
"sAMAccountName=%s", r->in.names[i].name);
if (count != 1) {
status = STATUS_SOME_UNMAPPED;
@ -956,7 +956,7 @@ static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
struct samr_OpenGroup *r)
{
struct samr_domain_state *d_state;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct dcesrv_handle *h;
const char *groupname, *sidstr;
TALLOC_CTX *mem_ctx2;
@ -979,7 +979,7 @@ static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
/* search for the group record */
ret = samdb_search(d_state->sam_ctx,
mem_ctx, d_state->basedn, &msgs, attrs,
mem_ctx, d_state->domain_dn, &msgs, attrs,
"(&(objectSid=%s)(objectclass=group))",
sidstr);
if (ret == 0) {
@ -1002,18 +1002,18 @@ static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
return NT_STATUS_NO_MEMORY;
}
state = talloc_p(mem_ctx2, struct samr_account_state);
if (!state) {
a_state = talloc_p(mem_ctx2, struct samr_account_state);
if (!a_state) {
return NT_STATUS_NO_MEMORY;
}
state->mem_ctx = mem_ctx2;
state->sam_ctx = d_state->sam_ctx;
state->access_mask = r->in.access_mask;
state->domain_state = d_state;
state->basedn = talloc_steal(mem_ctx, mem_ctx2, msgs[0]->dn);
state->account_sid = talloc_strdup(mem_ctx2, sidstr);
state->account_name = talloc_strdup(mem_ctx2, groupname);
if (!state->account_name || !state->account_sid) {
a_state->mem_ctx = mem_ctx2;
a_state->sam_ctx = d_state->sam_ctx;
a_state->access_mask = r->in.access_mask;
a_state->domain_state = d_state;
a_state->account_dn = talloc_steal(mem_ctx, mem_ctx2, msgs[0]->dn);
a_state->account_sid = talloc_strdup(mem_ctx2, sidstr);
a_state->account_name = talloc_strdup(mem_ctx2, groupname);
if (!a_state->account_name || !a_state->account_sid) {
return NT_STATUS_NO_MEMORY;
}
@ -1023,7 +1023,7 @@ static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
return NT_STATUS_NO_MEMORY;
}
g_handle->data = state;
g_handle->data = a_state;
g_handle->destroy = samr_Account_destroy;
/* the domain state is in use one more time */
@ -1045,11 +1045,11 @@ static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
#define QUERY_NTTIME(msg, field, attr) \
r->out.info->field = samdb_result_nttime(msg, attr, 0);
#define QUERY_APASSC(msg, field, attr) \
r->out.info->field = samdb_result_allow_pwd_change(state->sam_ctx, mem_ctx, \
state->domain_state->basedn, msg, attr);
r->out.info->field = samdb_result_allow_pwd_change(a_state->sam_ctx, mem_ctx, \
a_state->domain_state->domain_dn, msg, attr);
#define QUERY_FPASSC(msg, field, attr) \
r->out.info->field = samdb_result_force_pwd_change(state->sam_ctx, mem_ctx, \
state->domain_state->basedn, msg, attr);
r->out.info->field = samdb_result_force_pwd_change(a_state->sam_ctx, mem_ctx, \
a_state->domain_state->domain_dn, msg, attr);
#define QUERY_LHOURS(msg, field, attr) \
r->out.info->field = samdb_result_logon_hours(mem_ctx, msg, attr);
#define QUERY_AFLAGS(msg, field, attr) \
@ -1060,25 +1060,25 @@ static NTSTATUS samr_OpenGroup(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
#define SET_STRING(mod, field, attr) do { \
if (r->in.info->field == NULL) return NT_STATUS_INVALID_PARAMETER; \
if (samdb_msg_add_string(state->sam_ctx, mem_ctx, mod, attr, r->in.info->field) != 0) { \
if (samdb_msg_add_string(a_state->sam_ctx, mem_ctx, mod, attr, r->in.info->field) != 0) { \
return NT_STATUS_NO_MEMORY; \
} \
} while (0)
#define SET_UINT(mod, field, attr) do { \
if (samdb_msg_add_uint(state->sam_ctx, mem_ctx, mod, attr, r->in.info->field) != 0) { \
if (samdb_msg_add_uint(a_state->sam_ctx, mem_ctx, mod, attr, r->in.info->field) != 0) { \
return NT_STATUS_NO_MEMORY; \
} \
} while (0)
#define SET_AFLAGS(msg, field, attr) do { \
if (samdb_msg_add_acct_flags(state->sam_ctx, mem_ctx, msg, attr, r->in.info->field) != 0) { \
if (samdb_msg_add_acct_flags(a_state->sam_ctx, mem_ctx, msg, attr, r->in.info->field) != 0) { \
return NT_STATUS_NO_MEMORY; \
} \
} while (0)
#define SET_LHOURS(msg, field, attr) do { \
if (samdb_msg_add_logon_hours(state->sam_ctx, mem_ctx, msg, attr, r->in.info->field) != 0) { \
if (samdb_msg_add_logon_hours(a_state->sam_ctx, mem_ctx, msg, attr, r->in.info->field) != 0) { \
return NT_STATUS_NO_MEMORY; \
} \
} while (0)
@ -1090,7 +1090,7 @@ static NTSTATUS samr_QueryGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_C
struct samr_QueryGroupInfo *r)
{
struct dcesrv_handle *h;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct ldb_message *msg, **res;
const char * const attrs[4] = { "sAMAccountName", "description",
"numMembers", NULL };
@ -1100,11 +1100,11 @@ static NTSTATUS samr_QueryGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_C
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_GROUP);
state = h->data;
a_state = h->data;
/* pull all the group attributes */
ret = samdb_search(state->sam_ctx, mem_ctx, NULL, &res, attrs,
"dn=%s", state->basedn);
ret = samdb_search(a_state->sam_ctx, mem_ctx, NULL, &res, attrs,
"dn=%s", a_state->account_dn);
if (ret != 1) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
@ -1150,16 +1150,16 @@ static NTSTATUS samr_SetGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX
struct samr_SetGroupInfo *r)
{
struct dcesrv_handle *h;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct ldb_message mod, *msg = &mod;
int i, ret;
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_GROUP);
state = h->data;
a_state = h->data;
ZERO_STRUCT(mod);
mod.dn = talloc_strdup(mem_ctx, state->basedn);
mod.dn = talloc_strdup(mem_ctx, a_state->account_dn);
if (!mod.dn) {
return NT_STATUS_NO_MEMORY;
}
@ -1186,7 +1186,7 @@ static NTSTATUS samr_SetGroupInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX
}
/* modify the samdb record */
ret = samdb_modify(state->sam_ctx, mem_ctx, &mod);
ret = samdb_modify(a_state->sam_ctx, mem_ctx, &mod);
if (ret != 0) {
/* we really need samdb.c to return NTSTATUS */
return NT_STATUS_UNSUCCESSFUL;
@ -1213,16 +1213,16 @@ static NTSTATUS samr_DeleteDomainGroup(struct dcesrv_call_state *dce_call, TALLO
struct samr_DeleteDomainGroup *r)
{
struct dcesrv_handle *h;
struct samr_account_state *state;
struct samr_account_state *a_state;
int ret;
*r->out.handle = *r->in.handle;
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_GROUP);
state = h->data;
a_state = h->data;
ret = samdb_delete(state->sam_ctx, mem_ctx, state->basedn);
ret = samdb_delete(a_state->sam_ctx, mem_ctx, a_state->account_dn);
if (ret != 0) {
return NT_STATUS_UNSUCCESSFUL;
}
@ -1340,7 +1340,7 @@ static NTSTATUS samr_OpenUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *me
struct samr_OpenUser *r)
{
struct samr_domain_state *d_state;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct dcesrv_handle *h;
const char *username, *sidstr;
TALLOC_CTX *mem_ctx2;
@ -1363,7 +1363,7 @@ static NTSTATUS samr_OpenUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *me
/* search for the user record */
ret = samdb_search(d_state->sam_ctx,
mem_ctx, d_state->basedn, &msgs, attrs,
mem_ctx, d_state->domain_dn, &msgs, attrs,
"(&(objectSid=%s)(objectclass=user))",
sidstr);
if (ret == 0) {
@ -1386,18 +1386,18 @@ static NTSTATUS samr_OpenUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *me
return NT_STATUS_NO_MEMORY;
}
state = talloc_p(mem_ctx2, struct samr_account_state);
if (!state) {
a_state = talloc_p(mem_ctx2, struct samr_account_state);
if (!a_state) {
return NT_STATUS_NO_MEMORY;
}
state->mem_ctx = mem_ctx2;
state->sam_ctx = d_state->sam_ctx;
state->access_mask = r->in.access_mask;
state->domain_state = d_state;
state->basedn = talloc_steal(mem_ctx, mem_ctx2, msgs[0]->dn);
state->account_sid = talloc_strdup(mem_ctx2, sidstr);
state->account_name = talloc_strdup(mem_ctx2, username);
if (!state->account_name || !state->account_sid) {
a_state->mem_ctx = mem_ctx2;
a_state->sam_ctx = d_state->sam_ctx;
a_state->access_mask = r->in.access_mask;
a_state->domain_state = d_state;
a_state->account_dn = talloc_steal(mem_ctx, mem_ctx2, msgs[0]->dn);
a_state->account_sid = talloc_strdup(mem_ctx2, sidstr);
a_state->account_name = talloc_strdup(mem_ctx2, username);
if (!a_state->account_name || !a_state->account_sid) {
return NT_STATUS_NO_MEMORY;
}
@ -1407,7 +1407,7 @@ static NTSTATUS samr_OpenUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *me
return NT_STATUS_NO_MEMORY;
}
u_handle->data = state;
u_handle->data = a_state;
u_handle->destroy = samr_Account_destroy;
/* the domain state is in use one more time */
@ -1427,16 +1427,16 @@ static NTSTATUS samr_DeleteUser(struct dcesrv_call_state *dce_call, TALLOC_CTX *
struct samr_DeleteUser *r)
{
struct dcesrv_handle *h;
struct samr_account_state *state;
struct samr_account_state *a_state;
int ret;
*r->out.handle = *r->in.handle;
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_USER);
state = h->data;
a_state = h->data;
ret = samdb_delete(state->sam_ctx, mem_ctx, state->basedn);
ret = samdb_delete(a_state->sam_ctx, mem_ctx, a_state->account_dn);
if (ret != 0) {
return NT_STATUS_UNSUCCESSFUL;
}
@ -1454,7 +1454,7 @@ static NTSTATUS samr_QueryUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CT
struct samr_QueryUserInfo *r)
{
struct dcesrv_handle *h;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct ldb_message *msg, **res;
int ret;
@ -1462,11 +1462,11 @@ static NTSTATUS samr_QueryUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CT
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_USER);
state = h->data;
a_state = h->data;
/* pull all the user attributes */
ret = samdb_search(state->sam_ctx, mem_ctx, NULL, &res, NULL,
"dn=%s", state->basedn);
ret = samdb_search(a_state->sam_ctx, mem_ctx, NULL, &res, NULL,
"dn=%s", a_state->account_dn);
if (ret != 1) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
@ -1634,7 +1634,7 @@ static NTSTATUS samr_QueryUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CT
password when applied
*/
static NTSTATUS samr_set_password(struct dcesrv_call_state *dce_call,
struct samr_account_state *state, TALLOC_CTX *mem_ctx,
struct samr_account_state *a_state, TALLOC_CTX *mem_ctx,
struct ldb_message *msg,
struct samr_CryptPassword *pwbuf)
{
@ -1652,8 +1652,8 @@ static NTSTATUS samr_set_password(struct dcesrv_call_state *dce_call,
/* set the password - samdb needs to know both the domain and user DNs,
so the domain password policy can be used */
return samdb_set_password(state->sam_ctx, mem_ctx,
state->basedn, state->domain_state->basedn,
return samdb_set_password(a_state->sam_ctx, mem_ctx,
a_state->account_dn, a_state->domain_state->domain_dn,
msg, new_pass);
}
@ -1664,17 +1664,17 @@ static NTSTATUS samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX
struct samr_SetUserInfo *r)
{
struct dcesrv_handle *h;
struct samr_account_state *state;
struct samr_account_state *a_state;
struct ldb_message mod, *msg = &mod;
int i, ret;
NTSTATUS status = NT_STATUS_OK;
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_USER);
state = h->data;
a_state = h->data;
ZERO_STRUCT(mod);
mod.dn = talloc_strdup(mem_ctx, state->basedn);
mod.dn = talloc_strdup(mem_ctx, a_state->account_dn);
if (!mod.dn) {
return NT_STATUS_NO_MEMORY;
}
@ -1757,7 +1757,7 @@ static NTSTATUS samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX
/* the set password levels are handled separately */
case 24:
status = samr_set_password(dce_call, state, mem_ctx, msg,
status = samr_set_password(dce_call, a_state, mem_ctx, msg,
&r->in.info->info24.password);
break;
@ -1780,7 +1780,7 @@ static NTSTATUS samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX
}
/* modify the samdb record */
ret = samdb_modify(state->sam_ctx, mem_ctx, msg);
ret = samdb_modify(a_state->sam_ctx, mem_ctx, msg);
if (ret != 0) {
/* we really need samdb.c to return NTSTATUS */
return NT_STATUS_UNSUCCESSFUL;
@ -1857,18 +1857,18 @@ static NTSTATUS samr_GetUserPwInfo(struct dcesrv_call_state *dce_call, TALLOC_CT
struct samr_GetUserPwInfo *r)
{
struct dcesrv_handle *h;
struct samr_account_state *state;
struct samr_account_state *a_state;
ZERO_STRUCT(r->out.info);
DCESRV_PULL_HANDLE(h, r->in.handle, SAMR_HANDLE_USER);
state = h->data;
a_state = h->data;
r->out.info.min_pwd_len = samdb_search_uint(state->sam_ctx, mem_ctx, 0, NULL, "minPwdLength",
"dn=%s", state->domain_state->basedn);
r->out.info.password_properties = samdb_search_uint(state->sam_ctx, mem_ctx, 0, NULL, "pwdProperties",
"dn=%s", state->basedn);
r->out.info.min_pwd_len = samdb_search_uint(a_state->sam_ctx, mem_ctx, 0, NULL, "minPwdLength",
"dn=%s", a_state->domain_state->domain_dn);
r->out.info.password_properties = samdb_search_uint(a_state->sam_ctx, mem_ctx, 0, NULL, "pwdProperties",
"dn=%s", a_state->account_dn);
return NT_STATUS_OK;
}