summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2016-06-10 16:51:11 -0700
committerAlexander Bokovoy <ab@samba.org>2016-06-18 15:32:17 +0200
commitb4f9ac6a2446ec965dc139cf00fb7ace8459f604 (patch)
treead3fc116d9c780c50be499e1215f986f131a26eb /source3
parente639cf1040c5089b8ee485b424b91cad92695e80 (diff)
downloadsamba-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.h2
-rw-r--r--source3/libsmb/clientgen.c8
-rw-r--r--source3/libsmb/proto.h4
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);