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:
parent
e639cf1040
commit
b4f9ac6a24
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user