summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2003-02-11 21:55:48 +0000
committerAndrew Tridgell <tridge@samba.org>2003-02-11 21:55:48 +0000
commit8ddccd47c733abe6118c6f6f8d011bfc508396c1 (patch)
tree3a2fbee7400339f5cb84bcb0d6517bb2f90ae236 /source3/rpc_server
parent2d220ef00d1f2bae676a4201fb483a5ee3d0ae15 (diff)
downloadsamba-8ddccd47c733abe6118c6f6f8d011bfc508396c1.tar.gz
samba-8ddccd47c733abe6118c6f6f8d011bfc508396c1.tar.bz2
samba-8ddccd47c733abe6118c6f6f8d011bfc508396c1.zip
added server stubs for lsa_enum_acct_with_right
(This used to be commit aa2abacaf48924797b6803786c14c9f303185e4a)
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/srv_lsa.c32
-rw-r--r--source3/rpc_server/srv_lsa_nt.c29
2 files changed, 61 insertions, 0 deletions
diff --git a/source3/rpc_server/srv_lsa.c b/source3/rpc_server/srv_lsa.c
index ace95e7308..fad8f5641a 100644
--- a/source3/rpc_server/srv_lsa.c
+++ b/source3/rpc_server/srv_lsa.c
@@ -675,6 +675,37 @@ static BOOL api_lsa_enum_acct_rights(pipes_struct *p)
/***************************************************************************
+ api_lsa_enum_acct_with_right
+ ***************************************************************************/
+static BOOL api_lsa_enum_acct_with_right(pipes_struct *p)
+{
+ LSA_Q_ENUM_ACCT_WITH_RIGHT q_u;
+ LSA_R_ENUM_ACCT_WITH_RIGHT r_u;
+
+ prs_struct *data = &p->in_data.data;
+ prs_struct *rdata = &p->out_data.rdata;
+
+ ZERO_STRUCT(q_u);
+ ZERO_STRUCT(r_u);
+
+ if(!lsa_io_q_enum_acct_with_right("", &q_u, data, 0)) {
+ DEBUG(0,("api_lsa_enum_acct_with_right: failed to unmarshall LSA_Q_ENUM_ACCT_WITH_RIGHT.\n"));
+ return False;
+ }
+
+ r_u.status = _lsa_enum_acct_with_right(p, &q_u, &r_u);
+
+ /* store the response in the SMB stream */
+ if(!lsa_io_r_enum_acct_with_right("", &r_u, rdata, 0)) {
+ DEBUG(0,("api_lsa_enum_acct_with_right: Failed to marshall LSA_R_ENUM_ACCT_WITH_RIGHT.\n"));
+ return False;
+ }
+
+ return True;
+}
+
+
+/***************************************************************************
api_lsa_add_acctrights
***************************************************************************/
static BOOL api_lsa_add_acct_rights(pipes_struct *p)
@@ -769,6 +800,7 @@ int rpc_lsa_init(void)
{ "LSA_QUERYSECOBJ" , LSA_QUERYSECOBJ , api_lsa_query_secobj },
{ "LSA_QUERYINFO2" , LSA_QUERYINFO2 , api_lsa_query_info2 },
{ "LSA_ENUMACCTRIGHTS" , LSA_ENUMACCTRIGHTS , api_lsa_enum_acct_rights },
+ { "LSA_ENUMACCTWITHRIGHT", LSA_ENUMACCTWITHRIGHT, api_lsa_enum_acct_with_right },
{ "LSA_ADDACCTRIGHTS" , LSA_ADDACCTRIGHTS , api_lsa_add_acct_rights },
{ "LSA_REMOVEACCTRIGHTS", LSA_REMOVEACCTRIGHTS, api_lsa_remove_acct_rights},
};
diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c
index 7a2f5ae443..57e8177bc6 100644
--- a/source3/rpc_server/srv_lsa_nt.c
+++ b/source3/rpc_server/srv_lsa_nt.c
@@ -1283,6 +1283,35 @@ NTSTATUS _lsa_enum_acct_rights(pipes_struct *p, LSA_Q_ENUM_ACCT_RIGHTS *q_u, LSA
}
/***************************************************************************
+return a list of SIDs for a particular privilege
+ ***************************************************************************/
+NTSTATUS _lsa_enum_acct_with_right(pipes_struct *p,
+ LSA_Q_ENUM_ACCT_WITH_RIGHT *q_u,
+ LSA_R_ENUM_ACCT_WITH_RIGHT *r_u)
+{
+ struct lsa_info *info=NULL;
+ char *right;
+ DOM_SID *sids = NULL;
+ uint32 count = 0;
+
+ r_u->status = NT_STATUS_OK;
+
+ /* find the connection policy handle. */
+ if (!find_policy_by_hnd(p, &q_u->pol, (void **)&info))
+ return NT_STATUS_INVALID_HANDLE;
+
+ right = unistr2_tdup(p->mem_ctx, &q_u->right);
+
+ DEBUG(5,("lsa_enum_acct_with_right on right %s\n", right));
+
+ /* no backend db yet .... */
+
+ init_r_enum_acct_with_right(r_u, count, sids);
+
+ return r_u->status;
+}
+
+/***************************************************************************
add privileges to a acct by SID
***************************************************************************/
NTSTATUS _lsa_add_acct_rights(pipes_struct *p, LSA_Q_ADD_ACCT_RIGHTS *q_u, LSA_R_ADD_ACCT_RIGHTS *r_u)