diff options
author | Jeremy Allison <jra@samba.org> | 2016-06-10 16:51:11 -0700 |
---|---|---|
committer | Alexander Bokovoy <ab@samba.org> | 2016-06-18 15:32:17 +0200 |
commit | b4f9ac6a2446ec965dc139cf00fb7ace8459f604 (patch) | |
tree | ad3fc116d9c780c50be499e1215f986f131a26eb /source3 | |
parent | e639cf1040c5089b8ee485b424b91cad92695e80 (diff) | |
download | samba-b4f9ac6a2446ec965dc139cf00fb7ace8459f604.tar.gz |
s3: libsmb: Widen the internal client smb1.pid to 32-bits as is used on the wire and in libcli/smb/smb1*.c
Note: This has *NO* effect on the lock context code, as on the
wire for all SMB1 locking requests, the pid used as the lock
context is already truncated down to 16-bits - the field is only
16-bits wide.
This allows the cli_XXX() calls to correctly set pidlow AND pidhigh
in SMB1 requests put on the wire by the libcli/smb/smb1*.c code.
Note that currently the smbd server doesn't correctly return
pidhigh yet - a fix (and tests) for that will follow.
As pidhigh is not checked in any client code (mid is used
to differentiate different requests) this has no effect
other than a correctness fix.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/client.h | 2 | ||||
-rw-r--r-- | source3/libsmb/clientgen.c | 8 | ||||
-rw-r--r-- | source3/libsmb/proto.h | 4 |
3 files changed, 7 insertions, 7 deletions
diff --git a/source3/include/client.h b/source3/include/client.h index 0024c04a5ad..43ec39bb5a7 100644 --- a/source3/include/client.h +++ b/source3/include/client.h @@ -91,7 +91,7 @@ struct cli_state { const char *remote_realm; struct { - uint16_t pid; + uint32_t pid; uint16_t vc_num; struct smbXcli_session *session; struct smbXcli_tcon *tcon; diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index cfb3b162358..bf31bb17a57 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -225,7 +225,7 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx, goto error; } - cli->smb1.pid = (uint16_t)getpid(); + cli->smb1.pid = (uint32_t)getpid(); cli->smb1.vc_num = cli->smb1.pid; cli->smb1.tcon = smbXcli_tcon_create(cli); if (cli->smb1.tcon == NULL) { @@ -327,14 +327,14 @@ uint16_t cli_state_get_vc_num(struct cli_state *cli) Set the PID to use for smb messages. Return the old pid. ****************************************************************************/ -uint16_t cli_setpid(struct cli_state *cli, uint16_t pid) +uint32_t cli_setpid(struct cli_state *cli, uint32_t pid) { - uint16_t ret = cli->smb1.pid; + uint32_t ret = cli->smb1.pid; cli->smb1.pid = pid; return ret; } -uint16_t cli_getpid(struct cli_state *cli) +uint32_t cli_getpid(struct cli_state *cli) { return cli->smb1.pid; } diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h index 1e358f7e3d5..c5e74c932ed 100644 --- a/source3/libsmb/proto.h +++ b/source3/libsmb/proto.h @@ -172,8 +172,8 @@ void cli_nt_pipes_close(struct cli_state *cli); void cli_shutdown(struct cli_state *cli); const char *cli_state_remote_realm(struct cli_state *cli); uint16_t cli_state_get_vc_num(struct cli_state *cli); -uint16_t cli_setpid(struct cli_state *cli, uint16_t pid); -uint16_t cli_getpid(struct cli_state *cli); +uint32_t cli_setpid(struct cli_state *cli, uint32_t pid); +uint32_t cli_getpid(struct cli_state *cli); bool cli_state_has_tcon(struct cli_state *cli); uint16_t cli_state_get_tid(struct cli_state *cli); uint16_t cli_state_set_tid(struct cli_state *cli, uint16_t tid); |