]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
first stages of removing struct cli_state* and uint16 fnum from all
authorLuke Leighton <lkcl@samba.org>
Wed, 24 Nov 1999 20:24:33 +0000 (20:24 +0000)
committerLuke Leighton <lkcl@samba.org>
Wed, 24 Nov 1999 20:24:33 +0000 (20:24 +0000)
msrpc client code.  the intent is to hide / abstract / associate
connection info behind policy handles.

this makes the msrpc functions look more and more like their nt equivalents.

who-hou!
(This used to be commit c01b18e632aede6fce7264ef6971d7ddba945cfb)

14 files changed:
source3/Makefile.in
source3/include/proto.h
source3/lib/domain_namemap.c
source3/lib/util_hnd.c
source3/libsmb/clientgen.c
source3/rpc_client/cli_lsarpc.c
source3/rpc_client/cli_pipe.c
source3/rpc_client/msrpc_lsarpc.c
source3/rpc_client/msrpc_samr.c
source3/rpc_server/srv_lsa_hnd.c
source3/rpcclient/cmd_lsarpc.c
source3/rpcclient/cmd_samr.c
source3/rpcclient/rpcclient.c
source3/utils/rpctorture.c

index 1f481f6599e89da25822468e91b7fe33313c8c66..ce0f7471e2c81b876cda3940b4e188111a50e1d1 100644 (file)
@@ -159,6 +159,7 @@ RPC_CLIENT_OBJ = \
                rpc_client/cli_netlogon_sync.o \
                rpc_client/cli_reg.o \
                rpc_client/cli_pipe.o     \
+               rpc_client/cli_connect.o     \
                rpc_client/cli_spoolss.o   \
                rpc_client/cli_lsarpc.o   \
                rpc_client/cli_wkssvc.o   \
index be4183b4fc3dd2b0e1789db499d987d7e6b830d0..580ab22f9616380c3384d65bf9ea67ed4b05468a 100644 (file)
@@ -529,8 +529,9 @@ void *open_file_if_modified(const char *filename, char *mode, time_t *lastmodifi
 /*The following definitions come from  lib/util_hnd.c  */
 
 BOOL init_policy_hnd(int num_pol_hnds);
+BOOL register_policy_hnd(POLICY_HND *hnd);
 BOOL open_policy_hnd(POLICY_HND *hnd);
-int find_policy_by_hnd(POLICY_HND *hnd);
+int find_policy_by_hnd(const POLICY_HND *hnd);
 BOOL set_policy_samr_rid(POLICY_HND *hnd, uint32 rid);
 BOOL set_policy_samr_pol_status(POLICY_HND *hnd, uint32 pol_status);
 BOOL set_policy_samr_sid(POLICY_HND *hnd, DOM_SID *sid);
@@ -540,7 +541,8 @@ BOOL set_policy_reg_name(POLICY_HND *hnd, fstring name);
 BOOL get_policy_reg_name(POLICY_HND *hnd, fstring name);
 BOOL set_policy_cli_state(POLICY_HND *hnd, struct cli_state *cli, uint16 fnum,
                                void (*free_fn)(struct cli_state *, uint16));
-BOOL get_policy_cli_state(POLICY_HND *hnd, struct cli_state **cli, uint16 *fnum);
+BOOL get_policy_cli_state(const POLICY_HND *hnd, struct cli_state **cli,
+       uint16 *fnum);
 BOOL close_policy_hnd(POLICY_HND *hnd);
 
 /*The following definitions come from  lib/util_pwdb.c  */
@@ -710,8 +712,9 @@ BOOL cli_rename(struct cli_state *cli, char *fname_src, char *fname_dst);
 BOOL cli_unlink(struct cli_state *cli, char *fname);
 BOOL cli_mkdir(struct cli_state *cli, char *dname);
 BOOL cli_rmdir(struct cli_state *cli, char *dname);
-int cli_nt_create(struct cli_state *cli, char *fname);
-int cli_open(struct cli_state *cli, char *fname, int flags, int share_mode);
+int cli_nt_create(struct cli_state *cli, const char *fname);
+int cli_open(struct cli_state *cli, const char *fname,
+                               int flags, int share_mode);
 BOOL cli_close(struct cli_state *cli, int fnum);
 BOOL cli_lock(struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
 BOOL cli_unlock(struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
@@ -1779,6 +1782,16 @@ BOOL do_brs_query_info(struct cli_state *cli, uint16 fnum,
                        const char *server_name, uint32 switch_value,
                        void *id);
 
+/*The following definitions come from  rpc_client/cli_connect.c  */
+
+void cli_state_free(struct cli_state *cli, uint16 fnum);
+BOOL cli_state_init(const char* server_name, const char* pipe_name,
+                               struct cli_state **cli,
+                               uint16 *fnum);
+BOOL cli_state_get(const POLICY_HND *pol,
+                               struct cli_state **cli,
+                               uint16 *fnum);
+
 /*The following definitions come from  rpc_client/cli_eventlog.c  */
 
 BOOL do_event_open(struct cli_state *cli, uint16 fnum, char *log, POLICY_HND *hnd);
@@ -1813,42 +1826,34 @@ BOOL get_domain_sids(const char *myname,
 BOOL get_trust_sid_and_domain(const char* myname, char *server,
                                DOM_SID *sid,
                                char *domain, size_t len);
-BOOL lsa_open_policy(struct cli_state *cli, uint16 fnum,
-                       const char *server_name, POLICY_HND *hnd,
+BOOL lsa_open_policy(const char *server_name, POLICY_HND *hnd,
                        BOOL sec_qos);
-BOOL lsa_open_policy2(struct cli_state *cli, uint16 fnum,
-                       const char *server_name, POLICY_HND *hnd,
+BOOL lsa_open_policy2( const char *server_name, POLICY_HND *hnd,
                        BOOL sec_qos);
-BOOL lsa_open_secret(struct cli_state *cli, uint16 fnum,
-                               const POLICY_HND *hnd_pol,
+BOOL lsa_open_secret( const POLICY_HND *hnd,
                                const char *secret_name,
                                uint32 des_access,
                                POLICY_HND *hnd_secret);
-BOOL lsa_query_secret(struct cli_state *cli, uint16 fnum,
-                     POLICY_HND *pol, STRING2 *enc_secret,
+BOOL lsa_query_secret(POLICY_HND *hnd, STRING2 *secret,
                      NTTIME *last_update);
-BOOL lsa_lookup_names(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd,
+BOOL lsa_lookup_names( POLICY_HND *hnd,
                        int num_names,
                        char **names,
                        DOM_SID **sids,
                        uint8 **types,
                        int *num_sids);
-BOOL lsa_lookup_sids(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd,
+BOOL lsa_lookup_sids(POLICY_HND *hnd,
                        int num_sids,
                        DOM_SID **sids,
                        char ***names,
                        uint8 **types,
                        int *num_names);
-BOOL lsa_query_info_pol(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd, uint16 info_class,
+BOOL lsa_query_info_pol(POLICY_HND *hnd, uint16 info_class,
                        fstring domain_name, DOM_SID *domain_sid);
-BOOL lsa_enum_trust_dom(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd, uint32 *enum_ctx,
+BOOL lsa_enum_trust_dom(POLICY_HND *hnd, uint32 *enum_ctx,
                        uint32 *num_doms, char ***names,
                        DOM_SID ***sids);
-BOOL lsa_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd);
+BOOL lsa_close(POLICY_HND *hnd);
 
 /*The following definitions come from  rpc_client/cli_netlogon.c  */
 
@@ -1894,7 +1899,8 @@ BOOL create_rpc_bind_resp(struct pwd_info *pwd,
 BOOL rpc_api_pipe_req(struct cli_state *cli, uint16 fnum, uint8 op_num,
                       prs_struct *data, prs_struct *rdata);
 void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
-BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name, uint16* fnum);
+BOOL cli_nt_session_open(struct cli_state *cli, const char *pipe_name,
+               uint16* fnum);
 void cli_nt_session_close(struct cli_state *cli, uint16 fnum);
 
 /*The following definitions come from  rpc_client/cli_reg.c  */
@@ -2174,7 +2180,7 @@ BOOL do_wks_query_info(struct cli_state *cli, uint16 fnum,
 
 /*The following definitions come from  rpc_client/msrpc_lsarpc.c  */
 
-BOOL msrpc_lsa_query_secret(struct cli_state *cli,
+BOOL msrpc_lsa_query_secret(const char* srv_name,
                                const char* secret_name,
                                STRING2 *secret,
                                NTTIME *last_update);
index 05b67632a237c2547d88b315e72bf822887df524..51fcd2467a3a30b268a8cba03c73f00a72fcc273 100644 (file)
@@ -881,8 +881,8 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
 {
        struct cli_state cli;
        POLICY_HND lsa_pol;
-       uint16 fnum_lsa;
        fstring srv_name;
+       extern struct cli_state *rpc_smb_cli;
 
        BOOL res3 = True;
        BOOL res4 = True;
@@ -891,6 +891,8 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
        uint8 *types;
        char *names[1];
 
+       rpc_smb_cli = &cli;
+
        DEBUG(5,("lookup_remote_ntname: %s\n", ntname));
 
        if (!cli_connect_serverlist(&cli, lp_passwordserver()))
@@ -904,23 +906,16 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
        fstrcat(srv_name, cli.desthost);
        strupper(srv_name);
 
-       /* open LSARPC session. */
-       res3 = res3 ? cli_nt_session_open(&cli, PIPE_LSARPC, &fnum_lsa) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res3 = res3 ? lsa_open_policy(&cli, fnum_lsa,
-                               srv_name,
+       res3 = res3 ? lsa_open_policy( srv_name,
                                &lsa_pol, True) : False;
 
        /* send lsa lookup sids call */
-       res4 = res3 ? lsa_lookup_names(&cli, fnum_lsa, 
-                                      &lsa_pol,
+       res4 = res3 ? lsa_lookup_names( &lsa_pol,
                                       1, names, 
                                       &sids, &types, &num_sids) : False;
 
-       res3 = res3 ? lsa_close(&cli, fnum_lsa, &lsa_pol) : False;
-
-       cli_nt_session_close(&cli, fnum_lsa);
+       res3 = res3 ? lsa_close(&lsa_pol) : False;
 
        if (res4 && res3 && sids != NULL && types != NULL)
        {
index 36bacad59ba6b7d8b8e29fa291bfd2ec58b89a1c..8e4620f8dc5fa68889f344aab4071d016a45d311 100644 (file)
@@ -111,7 +111,7 @@ BOOL init_policy_hnd(int num_pol_hnds)
 /****************************************************************************
   find first available policy slot.  creates a policy handle for you.
 ****************************************************************************/
-BOOL open_policy_hnd(POLICY_HND *hnd)
+BOOL register_policy_hnd(POLICY_HND *hnd)
 {
        int i;
        struct policy *p;
@@ -135,7 +135,6 @@ BOOL open_policy_hnd(POLICY_HND *hnd)
        p->pnum = i;
        p->type = POL_NO_INFO;
 
-       create_pol_hnd(hnd);
        memcpy(&p->pol_hnd, hnd, sizeof(*hnd));
 
        bitmap_set(bmap, i);
@@ -148,23 +147,33 @@ BOOL open_policy_hnd(POLICY_HND *hnd)
        return True;
 }
 
+/****************************************************************************
+  find first available policy slot.  creates a policy handle for you.
+****************************************************************************/
+BOOL open_policy_hnd(POLICY_HND *hnd)
+{
+       create_pol_hnd(hnd);
+       return register_policy_hnd(hnd);
+}
+
 /****************************************************************************
   find policy by handle
 ****************************************************************************/
-static struct policy *find_policy(POLICY_HND *hnd)
+static struct policy *find_policy(const POLICY_HND *hnd)
 {
        struct policy *p;
 
        for (p=Policy;p;p=p->next) {
                if (memcmp(&p->pol_hnd, hnd, sizeof(*hnd)) == 0) {
                        DEBUG(4,("Found policy hnd[%x] ", p->pnum));
-                       dump_data(4, (char *)hnd->data, sizeof(hnd->data));
+                       dump_data(4, (const char *)hnd->data,
+                       sizeof(hnd->data));
                        return p;
                }
        }
 
        DEBUG(4,("Policy not found: "));
-       dump_data(4, (char *)hnd->data, sizeof(hnd->data));
+       dump_data(4, (const char *)hnd->data, sizeof(hnd->data));
 
        return NULL;
 }
@@ -172,7 +181,7 @@ static struct policy *find_policy(POLICY_HND *hnd)
 /****************************************************************************
   find policy index by handle
 ****************************************************************************/
-int find_policy_by_hnd(POLICY_HND *hnd)
+int find_policy_by_hnd(const POLICY_HND *hnd)
 {
        struct policy *p = find_policy(hnd);
 
@@ -393,7 +402,8 @@ BOOL set_policy_cli_state(POLICY_HND *hnd, struct cli_state *cli, uint16 fnum,
 /****************************************************************************
   get cli state
 ****************************************************************************/
-BOOL get_policy_cli_state(POLICY_HND *hnd, struct cli_state **cli, uint16 *fnum)
+BOOL get_policy_cli_state(const POLICY_HND *hnd, struct cli_state **cli,
+       uint16 *fnum)
 {
        struct policy *p = find_policy(hnd);
 
index 26a5f25c7d2ad6123a709a75108be3badf0f4739..61ce3f990028eb4cb9bad90efe011c807382f90b 100644 (file)
@@ -25,7 +25,6 @@
 #include "includes.h"
 #include "trans2.h"
 
-
 extern int DEBUGLEVEL;
 
 /* 
@@ -1331,7 +1330,7 @@ BOOL cli_rmdir(struct cli_state *cli, char *dname)
 /****************************************************************************
 open a file
 ****************************************************************************/
-int cli_nt_create(struct cli_state *cli, char *fname)
+int cli_nt_create(struct cli_state *cli, const char *fname)
 {
        char *p;
 
@@ -1375,7 +1374,8 @@ int cli_nt_create(struct cli_state *cli, char *fname)
 /****************************************************************************
 open a file
 ****************************************************************************/
-int cli_open(struct cli_state *cli, char *fname, int flags, int share_mode)
+int cli_open(struct cli_state *cli, const char *fname,
+                               int flags, int share_mode)
 {
        char *p;
        unsigned openfn=0;
@@ -3684,3 +3684,4 @@ BOOL cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail)
        
        return True;
 }
+
index d49ba09e4d5f7f093738e8f2d835014a09cce827..26b17243cdc24c7079bc8e998fe1dc23e5be06c4 100644 (file)
@@ -31,6 +31,7 @@
 
 extern int DEBUGLEVEL;
 
+extern struct cli_state *rpc_smb_cli;
 
 /****************************************************************************
  obtain the sid from the PDC.  do some verification along the way...
@@ -38,7 +39,6 @@ extern int DEBUGLEVEL;
 BOOL get_domain_sids(const char *myname,
                                DOM_SID *sid3, DOM_SID *sid5, char *servers)
 {
-       uint16 nt_pipe_fnum;
        POLICY_HND pol;
        fstring srv_name;
        struct cli_state cli;
@@ -46,6 +46,8 @@ BOOL get_domain_sids(const char *myname,
        fstring dom3;
        fstring dom5;
 
+       rpc_smb_cli = &cli;
+
        if (sid3 == NULL && sid5 == NULL)
        {
                /* don't waste my time... */
@@ -78,29 +80,25 @@ BOOL get_domain_sids(const char *myname,
        fstrcat(srv_name, myname);
        strupper(srv_name);
 
-       /* open LSARPC session. */
-       res = res ? cli_nt_session_open(&cli, PIPE_LSARPC, &nt_pipe_fnum) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res = res ? lsa_open_policy(&cli, nt_pipe_fnum, srv_name, &pol, False) : False;
+       res = res ? lsa_open_policy(srv_name, &pol, False) : False;
 
        if (sid3 != NULL)
        {
                /* send client info query, level 3.  receive domain name and sid */
-               res = res ? lsa_query_info_pol(&cli, nt_pipe_fnum, &pol, 3, dom3, sid3) : False;
+               res = res ? lsa_query_info_pol(&pol, 3, dom3, sid3) : False;
        }
 
        if (sid5 != NULL)
        {
                /* send client info query, level 5.  receive domain name and sid */
-               res = res ? lsa_query_info_pol(&cli, nt_pipe_fnum, &pol, 5, dom5, sid5) : False;
+               res = res ? lsa_query_info_pol(&pol, 5, dom5, sid5) : False;
        }
 
        /* close policy handle */
-       res = res ? lsa_close(&cli, nt_pipe_fnum, &pol) : False;
+       res = res ? lsa_close(&pol) : False;
 
        /* close the session */
-       cli_nt_session_close(&cli, nt_pipe_fnum);
        cli_ulogoff(&cli);
        cli_shutdown(&cli);
 
@@ -134,7 +132,6 @@ BOOL get_trust_sid_and_domain(const char* myname, char *server,
                                DOM_SID *sid,
                                char *domain, size_t len)
 {
-       uint16 nt_pipe_fnum;
        POLICY_HND pol;
        fstring srv_name;
        struct cli_state cli;
@@ -145,6 +142,8 @@ BOOL get_trust_sid_and_domain(const char* myname, char *server,
        fstring dom3;
        fstring dom5;
 
+       rpc_smb_cli = &cli;
+
        if (!cli_connect_serverlist(&cli, server))
        {
                DEBUG(0,("get_trust_sid: unable to initialise client connection.\n"));
@@ -160,23 +159,19 @@ BOOL get_trust_sid_and_domain(const char* myname, char *server,
        fstrcat(srv_name, myname);
        strupper(srv_name);
 
-       /* open LSARPC session. */
-       res = res ? cli_nt_session_open(&cli, PIPE_LSARPC, &nt_pipe_fnum) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res = res ? lsa_open_policy(&cli, nt_pipe_fnum, srv_name, &pol, False) : False;
+       res = res ? lsa_open_policy(srv_name, &pol, False) : False;
 
        /* send client info query, level 3.  receive domain name and sid */
-       res1 = res ? lsa_query_info_pol(&cli, nt_pipe_fnum, &pol, 3, dom3, &sid3) : False;
+       res1 = res ? lsa_query_info_pol(&pol, 3, dom3, &sid3) : False;
 
        /* send client info query, level 5.  receive domain name and sid */
-       res1 = res1 ? lsa_query_info_pol(&cli, nt_pipe_fnum, &pol, 5, dom5, &sid5) : False;
+       res1 = res1 ? lsa_query_info_pol(&pol, 5, dom5, &sid5) : False;
 
        /* close policy handle */
-       res = res ? lsa_close(&cli, nt_pipe_fnum, &pol) : False;
+       res = res ? lsa_close(&pol) : False;
 
        /* close the session */
-       cli_nt_session_close(&cli, nt_pipe_fnum);
        cli_ulogoff(&cli);
        cli_shutdown(&cli);
 
@@ -214,8 +209,7 @@ BOOL get_trust_sid_and_domain(const char* myname, char *server,
 /****************************************************************************
 do a LSA Open Policy
 ****************************************************************************/
-BOOL lsa_open_policy(struct cli_state *cli, uint16 fnum,
-                       const char *server_name, POLICY_HND *hnd,
+BOOL lsa_open_policy(const char *server_name, POLICY_HND *hnd,
                        BOOL sec_qos)
 {
        prs_struct rbuf;
@@ -223,6 +217,13 @@ BOOL lsa_open_policy(struct cli_state *cli, uint16 fnum,
        LSA_Q_OPEN_POL q_o;
        LSA_SEC_QOS qos;
        BOOL valid_pol = False;
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_init(server_name, PIPE_LSARPC, &cli, &fnum))
+       {
+               return False;
+       }
 
        if (hnd == NULL) return False;
 
@@ -267,7 +268,10 @@ BOOL lsa_open_policy(struct cli_state *cli, uint16 fnum,
                {
                        /* ok, at last: we're happy. return the policy handle */
                        memcpy(hnd, r_o.pol.data, sizeof(hnd->data));
-                       valid_pol = True;
+                       
+                       valid_pol = register_policy_hnd(hnd) &&
+                                   set_policy_cli_state(hnd, cli, fnum,
+                                                        cli_state_free);
                }
        }
 
@@ -280,8 +284,7 @@ BOOL lsa_open_policy(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Open Policy2
 ****************************************************************************/
-BOOL lsa_open_policy2(struct cli_state *cli, uint16 fnum,
-                       const char *server_name, POLICY_HND *hnd,
+BOOL lsa_open_policy2( const char *server_name, POLICY_HND *hnd,
                        BOOL sec_qos)
 {
        prs_struct rbuf;
@@ -290,6 +293,14 @@ BOOL lsa_open_policy2(struct cli_state *cli, uint16 fnum,
        LSA_SEC_QOS qos;
        BOOL valid_pol = False;
 
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_init(server_name, PIPE_LSARPC, &cli, &fnum))
+       {
+               return False;
+       }
+
        if (hnd == NULL) return False;
 
        prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
@@ -333,7 +344,9 @@ BOOL lsa_open_policy2(struct cli_state *cli, uint16 fnum,
                {
                        /* ok, at last: we're happy. return the policy handle */
                        memcpy(hnd, r_o.pol.data, sizeof(hnd->data));
-                       valid_pol = True;
+                       valid_pol = register_policy_hnd(hnd) &&
+                                   set_policy_cli_state(hnd, cli, fnum,
+                                                        cli_state_free);
                }
        }
 
@@ -346,8 +359,7 @@ BOOL lsa_open_policy2(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Open Secret
 ****************************************************************************/
-BOOL lsa_open_secret(struct cli_state *cli, uint16 fnum,
-                               const POLICY_HND *hnd_pol,
+BOOL lsa_open_secret( const POLICY_HND *hnd,
                                const char *secret_name,
                                uint32 des_access,
                                POLICY_HND *hnd_secret)
@@ -357,7 +369,15 @@ BOOL lsa_open_secret(struct cli_state *cli, uint16 fnum,
        LSA_Q_OPEN_SECRET q_o;
        BOOL valid_pol = False;
 
-       if (hnd_pol == NULL) return False;
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_get(hnd, &cli, &fnum))
+       {
+               return False;
+       }
+
+       if (hnd == NULL) return False;
 
        prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
        prs_init(&rbuf, 0   , 4, SAFETY_MARGIN, True );
@@ -366,7 +386,7 @@ BOOL lsa_open_secret(struct cli_state *cli, uint16 fnum,
 
        DEBUG(4,("LSA Open Secret\n"));
 
-       make_q_open_secret(&q_o, hnd_pol, secret_name, des_access);
+       make_q_open_secret(&q_o, hnd, secret_name, des_access);
 
        /* turn parameters into data stream */
        lsa_io_q_open_secret("", &q_o, &buf, 0);
@@ -404,8 +424,7 @@ BOOL lsa_open_secret(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Query Secret
 ****************************************************************************/
-BOOL lsa_query_secret(struct cli_state *cli, uint16 fnum,
-                     POLICY_HND *pol, STRING2 *enc_secret,
+BOOL lsa_query_secret(POLICY_HND *hnd, STRING2 *secret,
                      NTTIME *last_update)
 {
        prs_struct rbuf;
@@ -413,7 +432,15 @@ BOOL lsa_query_secret(struct cli_state *cli, uint16 fnum,
        LSA_Q_QUERY_SECRET q_q;
        BOOL valid_info = False;
 
-       if (pol == NULL) return False;
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_get(hnd, &cli, &fnum))
+       {
+               return False;
+       }
+
+       if (hnd == NULL) return False;
 
        prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
        prs_init(&rbuf, 0   , 4, SAFETY_MARGIN, True );
@@ -422,7 +449,7 @@ BOOL lsa_query_secret(struct cli_state *cli, uint16 fnum,
 
        DEBUG(4,("LSA Query Secret\n"));
 
-       make_q_query_secret(&q_q, pol);
+       make_q_query_secret(&q_q, hnd);
 
        /* turn parameters into data stream */
        lsa_io_q_query_secret("", &q_q, &buf, 0);
@@ -447,9 +474,11 @@ BOOL lsa_query_secret(struct cli_state *cli, uint16 fnum,
                    (r_q.info.value.ptr_secret != 0) &&
                    (r_q.info.ptr_update != 0))
                {
-                       memcpy(enc_secret,  &(r_q.info.value.enc_secret), sizeof(STRING2));
+                       STRING2 enc_secret;
+                       memcpy(&enc_secret,  &(r_q.info.value.enc_secret), sizeof(STRING2));
                        memcpy(last_update, &(r_q.info.last_update),      sizeof(NTTIME));
-                       valid_info = True;
+                       valid_info = nt_decrypt_string2(secret, &enc_secret,
+                                    (char*)(cli->pwd.smb_nt_pwd));
                }
        }
 
@@ -463,8 +492,7 @@ BOOL lsa_query_secret(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Lookup Names
 ****************************************************************************/
-BOOL lsa_lookup_names(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd,
+BOOL lsa_lookup_names( POLICY_HND *hnd,
                        int num_names,
                        char **names,
                        DOM_SID **sids,
@@ -476,6 +504,14 @@ BOOL lsa_lookup_names(struct cli_state *cli, uint16 fnum,
        LSA_Q_LOOKUP_NAMES q_l;
        BOOL valid_response = False;
 
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_get(hnd, &cli, &fnum))
+       {
+               return False;
+       }
+
        if (hnd == NULL || num_sids == 0 || sids == NULL) return False;
 
        prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
@@ -595,8 +631,7 @@ BOOL lsa_lookup_names(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Lookup SIDs
 ****************************************************************************/
-BOOL lsa_lookup_sids(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd,
+BOOL lsa_lookup_sids(POLICY_HND *hnd,
                        int num_sids,
                        DOM_SID **sids,
                        char ***names,
@@ -608,6 +643,14 @@ BOOL lsa_lookup_sids(struct cli_state *cli, uint16 fnum,
        LSA_Q_LOOKUP_SIDS q_l;
        BOOL valid_response = False;
 
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_get(hnd, &cli, &fnum))
+       {
+               return False;
+       }
+
        ZERO_STRUCT(q_l);
 
        if (hnd == NULL || num_sids == 0 || sids == NULL) return False;
@@ -745,8 +788,7 @@ BOOL lsa_lookup_sids(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Query Info Policy
 ****************************************************************************/
-BOOL lsa_query_info_pol(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd, uint16 info_class,
+BOOL lsa_query_info_pol(POLICY_HND *hnd, uint16 info_class,
                        fstring domain_name, DOM_SID *domain_sid)
 {
        prs_struct rbuf;
@@ -754,6 +796,14 @@ BOOL lsa_query_info_pol(struct cli_state *cli, uint16 fnum,
        LSA_Q_QUERY_INFO q_q;
        BOOL valid_response = False;
 
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_get(hnd, &cli, &fnum))
+       {
+               return False;
+       }
+
        ZERO_STRUCTP(domain_sid);
        domain_name[0] = 0;
 
@@ -854,8 +904,7 @@ BOOL lsa_query_info_pol(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Enumerate Trusted Domain 
 ****************************************************************************/
-BOOL lsa_enum_trust_dom(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd, uint32 *enum_ctx,
+BOOL lsa_enum_trust_dom(POLICY_HND *hnd, uint32 *enum_ctx,
                        uint32 *num_doms, char ***names,
                        DOM_SID ***sids)
 {
@@ -864,6 +913,14 @@ BOOL lsa_enum_trust_dom(struct cli_state *cli, uint16 fnum,
        LSA_Q_ENUM_TRUST_DOM q_q;
        BOOL valid_response = False;
 
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_get(hnd, &cli, &fnum))
+       {
+               return False;
+       }
+
        if (hnd == NULL || num_doms == NULL || names == NULL) return False;
 
        prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
@@ -931,12 +988,20 @@ BOOL lsa_enum_trust_dom(struct cli_state *cli, uint16 fnum,
 /****************************************************************************
 do a LSA Close
 ****************************************************************************/
-BOOL lsa_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd)
+BOOL lsa_close(POLICY_HND *hnd)
 {
        prs_struct rbuf;
        prs_struct buf; 
        LSA_Q_CLOSE q_c;
-    BOOL valid_close = False;
+       BOOL valid_close = False;
+
+       struct cli_state *cli = NULL;
+       uint16 fnum = 0xffff;
+
+       if (!cli_state_get(hnd, &cli, &fnum))
+       {
+               return False;
+       }
 
        if (hnd == NULL) return False;
 
@@ -993,6 +1058,8 @@ BOOL lsa_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd)
        prs_mem_free(&rbuf);
        prs_mem_free(&buf );
 
+       close_policy_hnd(hnd);
+
        return valid_close;
 }
 
index 71670c0d842fde511cc3dc7b9de5cf50fbcda8a7..1c8c406baed64c470b9c620452bbe951923064c3 100644 (file)
@@ -720,7 +720,7 @@ do an rpc bind
 ****************************************************************************/
 
 static BOOL rpc_pipe_set_hnd_state(struct cli_state *cli, uint16 fnum,
-                               char *pipe_name, uint16 device_state)
+                               const char *pipe_name, uint16 device_state)
 {
        BOOL state_set = False;
        char param[2];
@@ -763,7 +763,8 @@ static BOOL rpc_pipe_set_hnd_state(struct cli_state *cli, uint16 fnum,
  check the rpc bind acknowledge response
 ****************************************************************************/
 
-static BOOL valid_pipe_name(char *pipe_name, RPC_IFACE *abstract, RPC_IFACE *transfer)
+static BOOL valid_pipe_name(const char *pipe_name,
+                               RPC_IFACE *abstract, RPC_IFACE *transfer)
 {
        int pipe_idx = 0;
 
@@ -797,7 +798,8 @@ static BOOL valid_pipe_name(char *pipe_name, RPC_IFACE *abstract, RPC_IFACE *tra
  check the rpc bind acknowledge response
 ****************************************************************************/
 
-static BOOL check_bind_response(RPC_HDR_BA *hdr_ba, char *pipe_name, RPC_IFACE *transfer)
+static BOOL check_bind_response(RPC_HDR_BA *hdr_ba, const char *pipe_name,
+                               RPC_IFACE *transfer)
 {
        int i = 0;
 
@@ -859,7 +861,7 @@ do an rpc bind
 ****************************************************************************/
 
 static BOOL rpc_pipe_bind(struct cli_state *cli, uint16 fnum,
-                               char *pipe_name,
+                               const char *pipe_name,
                                RPC_IFACE *abstract, RPC_IFACE *transfer, 
                                char *my_name)
 {
@@ -1057,7 +1059,8 @@ void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs)
  open a session
  ****************************************************************************/
 
-BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name, uint16* fnum)
+BOOL cli_nt_session_open(struct cli_state *cli, const char *pipe_name,
+               uint16* fnum)
 {
        RPC_IFACE abstract;
        RPC_IFACE transfer;
index c361a7146ab3099d00ced0f40e0c42555a8d9940..83ecc94197ed6936af28746b04148db1edc2d6d5 100644 (file)
@@ -35,49 +35,31 @@ extern int DEBUGLEVEL;
 /****************************************************************************
 nt lsa query secret
 ****************************************************************************/
-BOOL msrpc_lsa_query_secret(struct cli_state *cli,
+BOOL msrpc_lsa_query_secret(const char* srv_name,
                                const char* secret_name,
                                STRING2 *secret,
                                NTTIME *last_update)
 {
-       uint16 nt_pipe_fnum;
-       fstring srv_name;
        BOOL res = True;
        BOOL res1;
        BOOL res2;
 
        POLICY_HND pol_sec;
        POLICY_HND lsa_pol;
-       STRING2 enc_secret;
-
-       fstrcpy(srv_name, "\\\\");
-       fstrcat(srv_name, cli->desthost);
-       strupper(srv_name);
-
-       /* open LSARPC session. */
-       res = res ? cli_nt_session_open(cli, PIPE_LSARPC, &nt_pipe_fnum) : False;
 
        /* lookup domain controller; receive a policy handle */
-       res = res ? lsa_open_policy2(cli, nt_pipe_fnum,
-                               srv_name,
+       res = res ? lsa_open_policy2( srv_name,
                                &lsa_pol, False) : False;
 
        /* lookup domain controller; receive a policy handle */
-       res1 = res ? lsa_open_secret(cli, nt_pipe_fnum,
-                               &lsa_pol,
+       res1 = res ? lsa_open_secret( &lsa_pol,
                                secret_name, 0x02000000, &pol_sec) : False;
 
-       res2 = res1 ? lsa_query_secret(cli, nt_pipe_fnum,
-                              &pol_sec, &enc_secret, last_update) : False;
-
-       res1 = res1 ? lsa_close(cli, nt_pipe_fnum, &pol_sec) : False;
-
-       res = res ? lsa_close(cli, nt_pipe_fnum, &lsa_pol) : False;
+       res2 = res1 ? lsa_query_secret(&pol_sec, secret, last_update) : False;
 
-       /* close the session */
-       cli_nt_session_close(cli, nt_pipe_fnum);
+       res1 = res1 ? lsa_close(&pol_sec) : False;
 
-       res2 = res2 ? nt_decrypt_string2(secret, &enc_secret, (char*)(cli->pwd.smb_nt_pwd)) : False;
+       res = res ? lsa_close(&lsa_pol) : False;
 
        return res2;
 }
index 02ffede615a2fa775edd0028424a9856f716f6b4..d5a37832f387f0026b6753fcb988eeced98dad02 100644 (file)
@@ -462,7 +462,6 @@ BOOL sam_query_aliasmem(struct cli_state *cli, uint16 fnum,
        if (res3 && num_aliases != 0)
        {
                fstring srv_name;
-               uint16 fnum_lsa;
                POLICY_HND lsa_pol;
 
                uint32 i;
@@ -477,23 +476,16 @@ BOOL sam_query_aliasmem(struct cli_state *cli, uint16 fnum,
                        add_sid_to_array(&numsids, sids, &sid_mem[i].sid);
                }
 
-               /* open LSARPC session. */
-               res3 = res3 ? cli_nt_session_open(cli, PIPE_LSARPC, &fnum_lsa) : False;
-
                /* lookup domain controller; receive a policy handle */
-               res3 = res3 ? lsa_open_policy(cli, fnum_lsa,
-                                       srv_name,
+               res3 = res3 ? lsa_open_policy( srv_name,
                                        &lsa_pol, True) : False;
 
                /* send lsa lookup sids call */
-               res4 = res3 ? lsa_lookup_sids(cli, fnum_lsa, 
-                                              &lsa_pol,
+               res4 = res3 ? lsa_lookup_sids( &lsa_pol,
                                               num_aliases, *sids, 
                                               name, type, num_names) : False;
 
-               res3 = res3 ? lsa_close(cli, fnum_lsa, &lsa_pol) : False;
-
-               cli_nt_session_close(cli, fnum_lsa);
+               res3 = res3 ? lsa_close(&lsa_pol) : False;
        }
 
        if (!res4)
index 36bacad59ba6b7d8b8e29fa291bfd2ec58b89a1c..8e4620f8dc5fa68889f344aab4071d016a45d311 100644 (file)
@@ -111,7 +111,7 @@ BOOL init_policy_hnd(int num_pol_hnds)
 /****************************************************************************
   find first available policy slot.  creates a policy handle for you.
 ****************************************************************************/
-BOOL open_policy_hnd(POLICY_HND *hnd)
+BOOL register_policy_hnd(POLICY_HND *hnd)
 {
        int i;
        struct policy *p;
@@ -135,7 +135,6 @@ BOOL open_policy_hnd(POLICY_HND *hnd)
        p->pnum = i;
        p->type = POL_NO_INFO;
 
-       create_pol_hnd(hnd);
        memcpy(&p->pol_hnd, hnd, sizeof(*hnd));
 
        bitmap_set(bmap, i);
@@ -148,23 +147,33 @@ BOOL open_policy_hnd(POLICY_HND *hnd)
        return True;
 }
 
+/****************************************************************************
+  find first available policy slot.  creates a policy handle for you.
+****************************************************************************/
+BOOL open_policy_hnd(POLICY_HND *hnd)
+{
+       create_pol_hnd(hnd);
+       return register_policy_hnd(hnd);
+}
+
 /****************************************************************************
   find policy by handle
 ****************************************************************************/
-static struct policy *find_policy(POLICY_HND *hnd)
+static struct policy *find_policy(const POLICY_HND *hnd)
 {
        struct policy *p;
 
        for (p=Policy;p;p=p->next) {
                if (memcmp(&p->pol_hnd, hnd, sizeof(*hnd)) == 0) {
                        DEBUG(4,("Found policy hnd[%x] ", p->pnum));
-                       dump_data(4, (char *)hnd->data, sizeof(hnd->data));
+                       dump_data(4, (const char *)hnd->data,
+                       sizeof(hnd->data));
                        return p;
                }
        }
 
        DEBUG(4,("Policy not found: "));
-       dump_data(4, (char *)hnd->data, sizeof(hnd->data));
+       dump_data(4, (const char *)hnd->data, sizeof(hnd->data));
 
        return NULL;
 }
@@ -172,7 +181,7 @@ static struct policy *find_policy(POLICY_HND *hnd)
 /****************************************************************************
   find policy index by handle
 ****************************************************************************/
-int find_policy_by_hnd(POLICY_HND *hnd)
+int find_policy_by_hnd(const POLICY_HND *hnd)
 {
        struct policy *p = find_policy(hnd);
 
@@ -393,7 +402,8 @@ BOOL set_policy_cli_state(POLICY_HND *hnd, struct cli_state *cli, uint16 fnum,
 /****************************************************************************
   get cli state
 ****************************************************************************/
-BOOL get_policy_cli_state(POLICY_HND *hnd, struct cli_state **cli, uint16 *fnum)
+BOOL get_policy_cli_state(const POLICY_HND *hnd, struct cli_state **cli,
+       uint16 *fnum)
 {
        struct policy *p = find_policy(hnd);
 
index 3f7cee2add30ff3614b56b4c55f5895e47af1d5b..70f725fd87f44de82bb04a3654b517e7549ee9b1 100644 (file)
@@ -34,15 +34,11 @@ extern int DEBUGLEVEL;
 
 extern FILE* out_hnd;
 
-extern struct cli_state *smb_cli;
-extern int smb_tidx;
-
 /****************************************************************************
 nt enumerate trusted domains
 ****************************************************************************/
 void cmd_lsa_enum_trust_dom(struct client_info *info, int argc, char *argv[])
 {
-       uint16 nt_pipe_fnum;
        fstring srv_name;
        uint32 num_doms = 0;
        char **domains = NULL;
@@ -57,28 +53,20 @@ void cmd_lsa_enum_trust_dom(struct client_info *info, int argc, char *argv[])
 
        DEBUG(4,("cmd_lsa_enum_trust_dom: server:%s\n", srv_name));
 
-       /* open LSARPC session. */
-       res = res ? cli_nt_session_open(smb_cli, PIPE_LSARPC, &nt_pipe_fnum) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res = res ? lsa_open_policy(smb_cli, nt_pipe_fnum,
-                               srv_name,
+       res = res ? lsa_open_policy( srv_name,
                                &info->dom.lsa_info_pol, False) : False;
 
        do
        {
                /* send enum trusted domains query */
-               res = res ? lsa_enum_trust_dom(smb_cli, nt_pipe_fnum, 
-                                         &info->dom.lsa_info_pol,
+               res = res ? lsa_enum_trust_dom( &info->dom.lsa_info_pol,
                                          &enum_ctx,
                                          &num_doms, &domains, &sids) : False;
 
        } while (res && enum_ctx != 0);
 
-       res = res ? lsa_close(smb_cli, nt_pipe_fnum, &info->dom.lsa_info_pol) : False;
-
-       /* close the session */
-       cli_nt_session_close(smb_cli, nt_pipe_fnum);
+       res = res ? lsa_close(&info->dom.lsa_info_pol) : False;
 
        if (res)
        {
@@ -108,7 +96,6 @@ nt lsa query
 ****************************************************************************/
 void cmd_lsa_query_info(struct client_info *info, int argc, char *argv[])
 {
-       uint16 nt_pipe_fnum;
        fstring srv_name;
 
        BOOL res = True;
@@ -124,32 +111,21 @@ void cmd_lsa_query_info(struct client_info *info, int argc, char *argv[])
 
        DEBUG(4,("cmd_lsa_query_info: server:%s\n", srv_name));
 
-       DEBUG(5, ("cmd_lsa_query_info: smb_cli->fd:%d\n", smb_cli->fd));
-
-       /* open LSARPC session. */
-       res = res ? cli_nt_session_open(smb_cli, PIPE_LSARPC, &nt_pipe_fnum) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res = res ? lsa_open_policy(smb_cli, nt_pipe_fnum,
-                               srv_name,
+       res = res ? lsa_open_policy( srv_name,
                                &info->dom.lsa_info_pol, False) : False;
 
        /* send client info query, level 3.  receive domain name and sid */
-       res = res ? lsa_query_info_pol(smb_cli, nt_pipe_fnum, 
-                                         &info->dom.lsa_info_pol, 0x03,
+       res = res ? lsa_query_info_pol( &info->dom.lsa_info_pol, 0x03,
                                          info->dom.level3_dom,
                                          &info->dom.level3_sid) : False;
 
        /* send client info query, level 5.  receive domain name and sid */
-       res = res ? lsa_query_info_pol(smb_cli, nt_pipe_fnum,
-                               &info->dom.lsa_info_pol, 0x05,
+       res = res ? lsa_query_info_pol( &info->dom.lsa_info_pol, 0x05,
                                info->dom.level5_dom,
                                &info->dom.level5_sid) : False;
 
-       res = res ? lsa_close(smb_cli, nt_pipe_fnum, &info->dom.lsa_info_pol) : False;
-
-       /* close the session */
-       cli_nt_session_close(smb_cli, nt_pipe_fnum);
+       res = res ? lsa_close(&info->dom.lsa_info_pol) : False;
 
        if (res)
        {
@@ -190,7 +166,6 @@ lookup names
 ****************************************************************************/
 void cmd_lsa_lookup_names(struct client_info *info, int argc, char *argv[])
 {
-       uint16 nt_pipe_fnum;
        fstring temp;
        int i;
        fstring srv_name;
@@ -222,24 +197,16 @@ void cmd_lsa_lookup_names(struct client_info *info, int argc, char *argv[])
                return;
        }
 
-       /* open LSARPC session. */
-       res = res ? cli_nt_session_open(smb_cli, PIPE_LSARPC, &nt_pipe_fnum) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res = res ? lsa_open_policy(smb_cli, nt_pipe_fnum,
-                               srv_name,
+       res = res ? lsa_open_policy( srv_name,
                                &info->dom.lsa_info_pol, True) : False;
 
        /* send lsa lookup sids call */
-       res = res ? lsa_lookup_names(smb_cli, nt_pipe_fnum, 
-                                      &info->dom.lsa_info_pol,
+       res = res ? lsa_lookup_names( &info->dom.lsa_info_pol,
                                       num_names, names,
                                       &sids, NULL, &num_sids) : False;
 
-       res = res ? lsa_close(smb_cli, nt_pipe_fnum, &info->dom.lsa_info_pol) : False;
-
-       /* close the session */
-       cli_nt_session_close(smb_cli, nt_pipe_fnum);
+       res = res ? lsa_close(&info->dom.lsa_info_pol) : False;
 
        if (res)
        {
@@ -273,7 +240,6 @@ lookup sids
 ****************************************************************************/
 void cmd_lsa_lookup_sids(struct client_info *info, int argc, char *argv[])
 {
-       uint16 nt_pipe_fnum;
        int i;
        pstring sid_name;
        fstring srv_name;
@@ -327,24 +293,16 @@ void cmd_lsa_lookup_sids(struct client_info *info, int argc, char *argv[])
                return;
        }
 
-       /* open LSARPC session. */
-       res = res ? cli_nt_session_open(smb_cli, PIPE_LSARPC, &nt_pipe_fnum) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res = res ? lsa_open_policy(smb_cli, nt_pipe_fnum,
-                               srv_name,
+       res = res ? lsa_open_policy( srv_name,
                                &info->dom.lsa_info_pol, True) : False;
 
        /* send lsa lookup sids call */
-       res = res ? lsa_lookup_sids(smb_cli, nt_pipe_fnum, 
-                                      &info->dom.lsa_info_pol,
+       res = res ? lsa_lookup_sids( &info->dom.lsa_info_pol,
                                       num_sids, sids,
                                       &names, NULL, &num_names) : False;
 
-       res = res ? lsa_close(smb_cli, nt_pipe_fnum, &info->dom.lsa_info_pol) : False;
-
-       /* close the session */
-       cli_nt_session_close(smb_cli, nt_pipe_fnum);
+       res = res ? lsa_close(&info->dom.lsa_info_pol) : False;
 
        if (res)
        {
@@ -381,6 +339,11 @@ void cmd_lsa_query_secret(struct client_info *info, int argc, char *argv[])
        char *secret_name;
        STRING2 secret;
        NTTIME last_update;
+       fstring srv_name;
+
+       fstrcpy(srv_name, "\\\\");
+       fstrcat(srv_name, info->dest_host);
+       strupper(srv_name);
 
        if (argc > 2)
        {
@@ -390,7 +353,7 @@ void cmd_lsa_query_secret(struct client_info *info, int argc, char *argv[])
 
        secret_name = argv[1];
 
-       if (msrpc_lsa_query_secret(smb_cli, secret_name, &secret, &last_update))
+       if (msrpc_lsa_query_secret(srv_name, secret_name, &secret, &last_update))
        {
                int i;
                report(out_hnd, "\tValue       : ");
@@ -408,4 +371,3 @@ void cmd_lsa_query_secret(struct client_info *info, int argc, char *argv[])
        }
 }
 
-
index 9f9df8ed199788386d741e7a600812a759a839b3..3e83b82008bdecf3c4020aa3eae3c00b5fa60563 100644 (file)
@@ -512,7 +512,6 @@ SAM add alias member.
 void cmd_sam_add_aliasmem(struct client_info *info, int argc, char *argv[])
 {
        uint16 fnum;
-       uint16 fnum_lsa;
        fstring srv_name;
        fstring domain;
        fstring tmp;
@@ -560,23 +559,16 @@ void cmd_sam_add_aliasmem(struct client_info *info, int argc, char *argv[])
 
        report(out_hnd, "SAM Domain Alias Member\n");
 
-       /* open LSARPC session. */
-       res3 = res3 ? cli_nt_session_open(smb_cli, PIPE_LSARPC, &fnum_lsa) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res3 = res3 ? lsa_open_policy(smb_cli, fnum_lsa,
-                               srv_name,
+       res3 = res3 ? lsa_open_policy( srv_name,
                                &lsa_pol, True) : False;
 
        /* send lsa lookup sids call */
-       res4 = res3 ? lsa_lookup_names(smb_cli, fnum_lsa, 
-                                      &lsa_pol,
+       res4 = res3 ? lsa_lookup_names( &lsa_pol,
                                       num_names, names, 
                                       &sids, NULL, &num_sids) : False;
 
-       res3 = res3 ? lsa_close(smb_cli, fnum_lsa, &lsa_pol) : False;
-
-       cli_nt_session_close(smb_cli, fnum_lsa);
+       res3 = res3 ? lsa_close(&lsa_pol) : False;
 
        res4 = num_sids < 2 ? False : res4;
 
index f242f9c4ea3be7e6ba4ec62113672cd5c534850a..7e36eeec007a37a060f895b8f09be5ef2d65903f 100644 (file)
@@ -48,6 +48,7 @@ static void cmd_quit(struct client_info *info, int argc, char *argv[]);
 
 static struct cli_state smbcli;
 struct cli_state *smb_cli = &smbcli;
+extern struct cli_state *rpc_smb_cli;
 
 static struct client_info cli_info;
 
@@ -62,6 +63,7 @@ initialise smb client structure
 void rpcclient_init(void)
 {
        bzero(smb_cli, sizeof(smb_cli));
+       rpc_smb_cli = smb_cli;
        cli_initialise(smb_cli);
        smb_cli->capabilities |= CAP_NT_SMBS | CAP_STATUS32;
 }
@@ -1379,6 +1381,7 @@ static char *complete_cmd_null(char *text, int state)
        out_hnd = stdout;
        fstrcpy(debugf, argv[0]);
 
+       init_policy_hnd(64);
        rpcclient_init();
 
 #ifdef KANJI
index ff98c0a837ee368d9ffd74bfc134da7c69b64b01..0933cf38c1f45aac5ec9c38a4e65073c422d4de4 100644 (file)
@@ -478,17 +478,12 @@ static void run_lsahandles(int numops, struct client_info *cli_info)
                DEBUG(0,("lsahandle test: connection failed\n"));
                return;
        }
-       /* open session.  */
-       if (!cli_nt_session_open(smb_cli, PIPE_LSARPC, &nt_pipe_fnum))
-       {
-               DEBUG(0,("lsahandle test: session open failed\n"));
-               return;
-       }
-
        for (i = 1; i <= numops * 100; i++)
        {
+               extern struct cli_state *rpc_smb_cli;
+               rpc_smb_cli = smb_cli;
                POLICY_HND pol;
-               if (!lsa_open_policy(smb_cli, nt_pipe_fnum, srv_name, &pol, False))
+               if (!lsa_open_policy(srv_name, &pol, False))
                {
                        failed++;
                }
@@ -499,9 +494,6 @@ static void run_lsahandles(int numops, struct client_info *cli_info)
                count++;
        }
 
-       /* close the session */
-       cli_nt_session_close(smb_cli, nt_pipe_fnum);
-
        /* close the rpc pipe */
        rpcclient_stop();