s3:libsmb: move cli->pid to cli->smb1.pid and hide it behind cli_[g|s]etpid()
authorStefan Metzmacher <metze@samba.org>
Tue, 19 Jul 2011 10:56:51 +0000 (12:56 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 20 Jul 2011 13:55:08 +0000 (15:55 +0200)
metze

source3/include/client.h
source3/libsmb/clientgen.c
source3/libsmb/clifile.c
source3/libsmb/proto.h
source3/torture/torture.c

index 3c99716e625d980faf2f0b4355de96d8820a15de..67c858f76f69fdef879f763a86a4454d450c49bc 100644 (file)
@@ -53,7 +53,6 @@ struct cli_state {
         struct cli_state *prev, *next;
        int fd;
        uint16 cnum;
-       uint16 pid;
        uint16 vuid;
        int protocol;
        int sec_mode;
@@ -134,6 +133,7 @@ struct cli_state {
 
        struct {
                uint16_t mid;
+               uint16_t pid;
                uint16_t vc_num;
        } smb1;
 
index aac38df360581cbe94c84a4c01f329f435dd5d11..67e8e06d1a645220b1953d6af7d9ef864efb446d 100644 (file)
@@ -68,7 +68,7 @@ void cli_setup_packet_buf(struct cli_state *cli, char *buf)
        uint16 flags2;
        cli->rap_error = 0;
        SIVAL(buf,smb_rcls,0);
-       SSVAL(buf,smb_pid,cli->pid);
+       SSVAL(buf,smb_pid,cli->smb1.pid);
        memset(buf+smb_pidhigh, 0, 12);
        SSVAL(buf,smb_uid,cli->vuid);
        SSVAL(buf,smb_mid,cli->smb1.mid);
@@ -185,7 +185,6 @@ struct cli_state *cli_initialise_ex(int signing_state)
        cli->fd = -1;
        cli->raw_status = NT_STATUS_INTERNAL_ERROR;
        cli->cnum = -1;
-       cli->pid = (uint16)sys_getpid();
        cli->vuid = UID_FIELD_INVALID;
        cli->protocol = PROTOCOL_NT1;
        cli->timeout = 20000; /* Timeout is in milliseconds. */
@@ -240,7 +239,8 @@ struct cli_state *cli_initialise_ex(int signing_state)
        cli->initialised = 1;
 
        cli->smb1.mid = 1;
-       cli->smb1.vc_num = cli->pid;
+       cli->smb1.pid = (uint16_t)sys_getpid();
+       cli->smb1.vc_num = cli->smb1.pid;
 
        return cli;
 
@@ -354,11 +354,16 @@ uint16_t cli_state_get_vc_num(struct cli_state *cli)
 
 uint16 cli_setpid(struct cli_state *cli, uint16 pid)
 {
-       uint16 ret = cli->pid;
-       cli->pid = pid;
+       uint16_t ret = cli->smb1.pid;
+       cli->smb1.pid = pid;
        return ret;
 }
 
+uint16_t cli_getpid(struct cli_state *cli)
+{
+       return cli->smb1.pid;
+}
+
 /****************************************************************************
  Set the case sensitivity flag on the packets. Returns old state.
 ****************************************************************************/
index 8cf60ded81ebb370c9b8ef043edba2ad7fedc3ad..6503e234e5e1fc4ccdf0876980a7f7680eb33c44 100644 (file)
@@ -2556,7 +2556,7 @@ NTSTATUS cli_locktype(struct cli_state *cli, uint16_t fnum,
        SSVAL(vwv + 6, 0, 0);
        SSVAL(vwv + 7, 0, 1);
 
-       SSVAL(bytes, 0, cli->pid);
+       SSVAL(bytes, 0, cli_getpid(cli));
        SIVAL(bytes, 2, offset);
        SIVAL(bytes, 6, len);
 
@@ -2626,7 +2626,7 @@ struct tevent_req *cli_unlock_send(TALLOC_CTX *mem_ctx,
        SSVAL(state->vwv+6, 0, 1);
        SSVAL(state->vwv+7, 0, 0);
 
-       SSVAL(state->data, 0, cli->pid);
+       SSVAL(state->data, 0, cli_getpid(cli));
        SIVAL(state->data, 2, offset);
        SIVAL(state->data, 6, len);
 
@@ -2732,7 +2732,7 @@ NTSTATUS cli_lock64(struct cli_state *cli, uint16_t fnum,
        SSVAL(vwv + 6, 0, 0);
        SSVAL(vwv + 7, 0, 1);
 
-       SIVAL(bytes, 0, cli->pid);
+       SIVAL(bytes, 0, cli_getpid(cli));
        SOFF_T_R(bytes, 4, offset);
        SOFF_T_R(bytes, 12, len);
 
@@ -2786,7 +2786,7 @@ struct tevent_req *cli_unlock64_send(TALLOC_CTX *mem_ctx,
        SSVAL(state->vwv+6, 0, 1);
        SSVAL(state->vwv+7, 0, 0);
 
-       SIVAL(state->data, 0, cli->pid);
+       SIVAL(state->data, 0, cli_getpid(cli));
        SOFF_T_R(state->data, 4, offset);
        SOFF_T_R(state->data, 12, len);
 
@@ -2932,7 +2932,7 @@ static struct tevent_req *cli_posix_lock_internal_send(TALLOC_CTX *mem_ctx,
                                POSIX_LOCK_FLAG_NOWAIT);
        }
 
-       SIVAL(&state->data, POSIX_LOCK_PID_OFFSET, cli->pid);
+       SIVAL(&state->data, POSIX_LOCK_PID_OFFSET, cli_getpid(cli));
        SOFF_T(&state->data, POSIX_LOCK_START_OFFSET, offset);
        SOFF_T(&state->data, POSIX_LOCK_LEN_OFFSET, len);
 
index 7ba2aaccadc365645afb5f59fe6af752cf4be8d9..9775bd775d3f07e43ef24098d7e4ad363b6d4a7b 100644 (file)
@@ -166,6 +166,7 @@ void cli_shutdown(struct cli_state *cli);
 void cli_sockopt(struct cli_state *cli, const char *options);
 uint16_t cli_state_get_vc_num(struct cli_state *cli);
 uint16 cli_setpid(struct cli_state *cli, uint16 pid);
+uint16_t cli_getpid(struct cli_state *cli);
 bool cli_set_case_sensitive(struct cli_state *cli, bool case_sensitive);
 struct tevent_req *cli_echo_send(TALLOC_CTX *mem_ctx, struct event_context *ev,
                                 struct cli_state *cli, uint16_t num_echos,
index 39d7ad3005a80368f883d4276ba2567bb3d8e3be..e0e7275e8bababdcdd78bb45315264b9d17ea943 100644 (file)
@@ -2725,7 +2725,7 @@ static bool run_fdpasstest(int dummy)
 
        cli2->vuid = cli1->vuid;
        cli2->cnum = cli1->cnum;
-       cli2->pid = cli1->pid;
+       cli_setpid(cli2, cli_getpid(cli1));
 
        if (cli_read(cli2, fnum1, buf, 0, 13) == 13) {
                printf("read succeeded! nasty security hole [%s]\n",