[SCM] Samba Shared Repository - branch v3-2-test updated -
initial-v3-2-test-2009-g325bf05
Günther Deschner
gd at samba.org
Fri Feb 8 12:33:26 GMT 2008
The branch, v3-2-test has been updated
via 325bf05592c4d2e7c760de64f8869a44f7315ce9 (commit)
from 72fc4ffa38285b3358c6e264e9007162ae3782f1 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 325bf05592c4d2e7c760de64f8869a44f7315ce9
Author: Günther Deschner <gd at samba.org>
Date: Fri Feb 8 13:29:01 2008 +0100
Use pidl for _samr_LookupNames().
Guenther
-----------------------------------------------------------------------
Summary of changes:
source/rpc_server/srv_samr.c | 24 +------------
source/rpc_server/srv_samr_nt.c | 73 ++++++++++++++++++---------------------
2 files changed, 35 insertions(+), 62 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/rpc_server/srv_samr.c b/source/rpc_server/srv_samr.c
index d880330..2321d56 100644
--- a/source/rpc_server/srv_samr.c
+++ b/source/rpc_server/srv_samr.c
@@ -218,29 +218,7 @@ static bool api_samr_query_aliasinfo(pipes_struct *p)
static bool api_samr_lookup_names(pipes_struct *p)
{
- SAMR_Q_LOOKUP_NAMES q_u;
- SAMR_R_LOOKUP_NAMES r_u;
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- /* grab the samr lookup names */
- if(!samr_io_q_lookup_names("", &q_u, data, 0)) {
- DEBUG(0,("api_samr_lookup_names: unable to unmarshall SAMR_Q_LOOKUP_NAMES.\n"));
- return False;
- }
-
- r_u.status = _samr_lookup_names(p, &q_u, &r_u);
-
- /* store the response in the SMB stream */
- if(!samr_io_r_lookup_names("", &r_u, rdata, 0)) {
- DEBUG(0,("api_samr_lookup_names: unable to marshall SAMR_R_LOOKUP_NAMES.\n"));
- return False;
- }
-
- return True;
+ return proxy_samr_call(p, NDR_SAMR_LOOKUPNAMES);
}
/*******************************************************************
diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index 6d3bca8..9ed7014 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -1471,75 +1471,80 @@ NTSTATUS _samr_QueryAliasInfo(pipes_struct *p,
#endif
/*******************************************************************
- _samr_lookup_names
+ _samr_LookupNames
********************************************************************/
-NTSTATUS _samr_lookup_names(pipes_struct *p, SAMR_Q_LOOKUP_NAMES *q_u, SAMR_R_LOOKUP_NAMES *r_u)
+NTSTATUS _samr_LookupNames(pipes_struct *p,
+ struct samr_LookupNames *r)
{
+ NTSTATUS status;
uint32 rid[MAX_SAM_ENTRIES];
enum lsa_SidType type[MAX_SAM_ENTRIES];
int i;
- int num_rids = q_u->num_names2;
+ int num_rids = r->in.num_names;
DOM_SID pol_sid;
uint32 acc_granted;
+ struct samr_Ids rids, types;
- r_u->status = NT_STATUS_OK;
-
- DEBUG(5,("_samr_lookup_names: %d\n", __LINE__));
+ DEBUG(5,("_samr_LookupNames: %d\n", __LINE__));
ZERO_ARRAY(rid);
ZERO_ARRAY(type);
- if (!get_lsa_policy_samr_sid(p, &q_u->pol, &pol_sid, &acc_granted, NULL)) {
- init_samr_r_lookup_names(p->mem_ctx, r_u, 0, NULL, NULL, NT_STATUS_OBJECT_TYPE_MISMATCH);
- return r_u->status;
+ if (!get_lsa_policy_samr_sid(p, r->in.domain_handle, &pol_sid, &acc_granted, NULL)) {
+ return NT_STATUS_OBJECT_TYPE_MISMATCH;
}
- if (!NT_STATUS_IS_OK(r_u->status = access_check_samr_function(acc_granted, 0, "_samr_lookup_names"))) { /* Don't know the acc_bits yet */
- return r_u->status;
+ status = access_check_samr_function(acc_granted,
+ 0, /* Don't know the acc_bits yet */
+ "_samr_LookupNames");
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
}
if (num_rids > MAX_SAM_ENTRIES) {
num_rids = MAX_SAM_ENTRIES;
- DEBUG(5,("_samr_lookup_names: truncating entries to %d\n", num_rids));
+ DEBUG(5,("_samr_LookupNames: truncating entries to %d\n", num_rids));
}
- DEBUG(5,("_samr_lookup_names: looking name on SID %s\n",
+ DEBUG(5,("_samr_LookupNames: looking name on SID %s\n",
sid_string_dbg(&pol_sid)));
for (i = 0; i < num_rids; i++) {
- fstring name;
- int ret;
- r_u->status = NT_STATUS_NONE_MAPPED;
+ status = NT_STATUS_NONE_MAPPED;
type[i] = SID_NAME_UNKNOWN;
- rid [i] = 0xffffffff;
-
- ret = rpcstr_pull(name, q_u->uni_name[i].buffer, sizeof(name), q_u->uni_name[i].uni_str_len*2, 0);
-
- if (ret <= 0) {
- continue;
- }
+ rid[i] = 0xffffffff;
if (sid_check_is_builtin(&pol_sid)) {
- if (lookup_builtin_name(name, &rid[i])) {
+ if (lookup_builtin_name(r->in.names[i].string,
+ &rid[i]))
+ {
type[i] = SID_NAME_ALIAS;
}
} else {
- lookup_global_sam_name(name, 0, &rid[i], &type[i]);
+ lookup_global_sam_name(r->in.names[i].string, 0,
+ &rid[i], &type[i]);
}
if (type[i] != SID_NAME_UNKNOWN) {
- r_u->status = NT_STATUS_OK;
+ status = NT_STATUS_OK;
}
}
- init_samr_r_lookup_names(p->mem_ctx, r_u, num_rids, rid, type, r_u->status);
+ rids.count = num_rids;
+ rids.ids = rid;
- DEBUG(5,("_samr_lookup_names: %d\n", __LINE__));
+ types.count = num_rids;
+ types.ids = type;
- return r_u->status;
+ *r->out.rids = rids;
+ *r->out.types = types;
+
+ DEBUG(5,("_samr_LookupNames: %d\n", __LINE__));
+
+ return status;
}
/*******************************************************************
@@ -5225,16 +5230,6 @@ NTSTATUS _samr_EnumDomainAliases(pipes_struct *p,
/****************************************************************
****************************************************************/
-NTSTATUS _samr_LookupNames(pipes_struct *p,
- struct samr_LookupNames *r)
-{
- p->rng_fault_state = true;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
NTSTATUS _samr_SetMemberAttributesOfGroup(pipes_struct *p,
struct samr_SetMemberAttributesOfGroup *r)
{
--
Samba Shared Repository
More information about the samba-cvs
mailing list