From: Volker Lendecke Date: Thu, 11 Jan 2018 10:25:49 +0000 (+0100) Subject: smbXcli: Add "force_channel_sequence" X-Git-Tag: samba-4.8.0rc1~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cd288a08500b1cc38ef26e5cb8ef754b4da658b6;p=thirdparty%2Fsamba.git smbXcli: Add "force_channel_sequence" This enables use of the channel sequence number even for non-multi-channel servers. This makes our client invalid, but we need to protect against broken clients with tests. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13215 Signed-off-by: Volker Lendecke Reviewed-by: Stefan Metzmacher --- diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c index 6335ce0c121..e9fdc1dc32a 100644 --- a/libcli/smb/smbXcli_base.c +++ b/libcli/smb/smbXcli_base.c @@ -138,6 +138,8 @@ struct smbXcli_conn { uint8_t io_priority; + bool force_channel_sequence; + uint8_t preauth_sha512[64]; } smb2; @@ -549,6 +551,17 @@ const struct GUID *smbXcli_conn_server_guid(struct smbXcli_conn *conn) return &conn->smb1.server.guid; } +bool smbXcli_conn_get_force_channel_sequence(struct smbXcli_conn *conn) +{ + return conn->smb2.force_channel_sequence; +} + +void smbXcli_conn_set_force_channel_sequence(struct smbXcli_conn *conn, + bool v) +{ + conn->smb2.force_channel_sequence = v; +} + struct smbXcli_conn_samba_suicide_state { struct smbXcli_conn *conn; struct iovec iov; @@ -2899,7 +2912,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx, uint32_t flags = 0; uint32_t tid = 0; uint64_t uid = 0; - bool use_channel_sequence = false; + bool use_channel_sequence = conn->smb2.force_channel_sequence; uint16_t channel_sequence = 0; bool use_replay_flag = false; diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h index d0ee04f4bb0..20ef26e3353 100644 --- a/libcli/smb/smbXcli_base.h +++ b/libcli/smb/smbXcli_base.h @@ -59,6 +59,10 @@ uint16_t smbXcli_conn_max_requests(struct smbXcli_conn *conn); NTTIME smbXcli_conn_server_system_time(struct smbXcli_conn *conn); const DATA_BLOB *smbXcli_conn_server_gss_blob(struct smbXcli_conn *conn); const struct GUID *smbXcli_conn_server_guid(struct smbXcli_conn *conn); +bool smbXcli_conn_get_force_channel_sequence(struct smbXcli_conn *conn); +void smbXcli_conn_set_force_channel_sequence(struct smbXcli_conn *conn, + bool v); + struct tevent_req *smbXcli_conn_samba_suicide_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev,