1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

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>
This commit is contained in:
Jeremy Allison 2016-06-10 16:51:11 -07:00 committed by Alexander Bokovoy
parent e639cf1040
commit b4f9ac6a24
3 changed files with 7 additions and 7 deletions

View File

@ -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;

View File

@ -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;
}

View File

@ -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);