diff options
author | Stefan Metzmacher <metze@samba.org> | 2017-08-14 12:13:18 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2017-09-04 11:35:59 +0200 |
commit | 282a1d122f9861b0521fa5a389ad467f8da93bd1 (patch) | |
tree | 3f45bc74f505f76fd476177be72d9f884b737ae2 | |
parent | 609e6b09feb4b00ee52db4a9df258cb9061f4ad8 (diff) | |
download | samba-282a1d122f9861b0521fa5a389ad467f8da93bd1.tar.gz |
CVE-2017-12151: s3:libsmb: add cli_state_is_encryption_on() helper function
This allows to check if the current cli_state uses encryption
(either via unix extentions or via SMB3).
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12996
Signed-off-by: Stefan Metzmacher <metze@samba.org>
-rw-r--r-- | source3/libsmb/clientgen.c | 13 | ||||
-rw-r--r-- | source3/libsmb/proto.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index 2b53a930809..e675f95af60 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -334,6 +334,19 @@ uint32_t cli_getpid(struct cli_state *cli) return cli->smb1.pid; } +bool cli_state_is_encryption_on(struct cli_state *cli) +{ + if (smbXcli_conn_protocol(cli->conn) < PROTOCOL_SMB2_02) { + return smb1cli_conn_encryption_on(cli->conn); + } + + if (cli->smb2.tcon == NULL) { + return false; + } + + return smb2cli_tcon_is_encryption_on(cli->smb2.tcon); +} + bool cli_state_has_tcon(struct cli_state *cli) { uint32_t tid; diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h index 340cd225ea0..f276b74987c 100644 --- a/source3/libsmb/proto.h +++ b/source3/libsmb/proto.h @@ -174,6 +174,7 @@ const char *cli_state_remote_realm(struct cli_state *cli); uint16_t cli_state_get_vc_num(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_is_encryption_on(struct cli_state *cli); bool cli_state_has_tcon(struct cli_state *cli); uint32_t cli_state_get_tid(struct cli_state *cli); uint32_t cli_state_set_tid(struct cli_state *cli, uint32_t tid); |