summaryrefslogtreecommitdiff
path: root/source3/lsarpcd/srv_lsa.c
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1998-10-15 05:47:29 +0000
committerLuke Leighton <lkcl@samba.org>1998-10-15 05:47:29 +0000
commita42afcdcc7ab9aa9ed193ae36d3dbb10843447f0 (patch)
treed5f55708810d375cb906e8deea7dd21e522be07f /source3/lsarpcd/srv_lsa.c
parentba22030ed7e81749116191bce26e948ebf35e2cb (diff)
downloadsamba-a42afcdcc7ab9aa9ed193ae36d3dbb10843447f0.tar.gz
samba-a42afcdcc7ab9aa9ed193ae36d3dbb10843447f0.tar.bz2
samba-a42afcdcc7ab9aa9ed193ae36d3dbb10843447f0.zip
bug-fixing against:
AS/U: it returns dce/rpc "first" and "last" bits _clear_ in a bind/ack response, when they should be set in a (small) packet. they also, in the bind/ack do not set a secondary address string at all, so we can't check against that... Win95: client-side dce/rpc code is a bit odd. it does a "WaitNamedPipeState" and has slightly different pipe-naming (\PIPE\LANMAN is joined by \PIPE\SRVSVC, \PIPE\WINREG etc whereas nt just has \PIPE\LANMAN and \PIPE\). Win95-USRMGR.EXE: added LsaOpenPolicy (renamed existing to LsaOpenPolicy2). added SamrConnect (renamed existing to SamrConnect2). (This used to be commit a7fccd807b938cbb51002ebae8c7a48b40dbb655)
Diffstat (limited to 'source3/lsarpcd/srv_lsa.c')
-rw-r--r--source3/lsarpcd/srv_lsa.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/source3/lsarpcd/srv_lsa.c b/source3/lsarpcd/srv_lsa.c
index 2e5ebc9e68..93584b5acf 100644
--- a/source3/lsarpcd/srv_lsa.c
+++ b/source3/lsarpcd/srv_lsa.c
@@ -31,6 +31,28 @@ extern int DEBUGLEVEL;
extern DOM_SID global_machine_sid;
/***************************************************************************
+lsa_reply_open_policy2
+ ***************************************************************************/
+static void lsa_reply_open_policy2(prs_struct *rdata)
+{
+ int i;
+ LSA_R_OPEN_POL2 r_o;
+
+ ZERO_STRUCT(r_o);
+
+ /* set up the LSA QUERY INFO response */
+
+ for (i = 4; i < POL_HND_SIZE; i++)
+ {
+ r_o.pol.data[i] = i;
+ }
+ r_o.status = 0x0;
+
+ /* store the response in the SMB stream */
+ lsa_io_r_open_pol2("", &r_o, rdata, 0);
+}
+
+/***************************************************************************
lsa_reply_open_policy
***************************************************************************/
static void lsa_reply_open_policy(prs_struct *rdata)
@@ -282,6 +304,25 @@ static void lsa_reply_lookup_rids(prs_struct *rdata,
/***************************************************************************
api_lsa_open_policy
***************************************************************************/
+static void api_lsa_open_policy2( uint16 vuid, prs_struct *data,
+ prs_struct *rdata )
+{
+ LSA_Q_OPEN_POL2 q_o;
+
+ ZERO_STRUCT(q_o);
+
+ /* grab the server, object attributes and desired access flag...*/
+ lsa_io_q_open_pol2("", &q_o, data, 0);
+
+ /* lkclXXXX having decoded it, ignore all fields in the open policy! */
+
+ /* return a 20 byte policy handle */
+ lsa_reply_open_policy2(rdata);
+}
+
+/***************************************************************************
+api_lsa_open_policy
+ ***************************************************************************/
static void api_lsa_open_policy( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
@@ -513,6 +554,7 @@ static void api_lsa_open_secret( uint16 vuid, prs_struct *data,
***************************************************************************/
static struct api_struct api_lsa_cmds[] =
{
+ { "LSA_OPENPOLICY2" , LSA_OPENPOLICY2 , api_lsa_open_policy2 },
{ "LSA_OPENPOLICY" , LSA_OPENPOLICY , api_lsa_open_policy },
{ "LSA_QUERYINFOPOLICY" , LSA_QUERYINFOPOLICY , api_lsa_query_info },
{ "LSA_ENUMTRUSTDOM" , LSA_ENUMTRUSTDOM , api_lsa_enum_trust_dom },