summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2017-08-14 12:13:18 +0200
committerKarolin Seeger <kseeger@samba.org>2017-09-13 09:19:49 -0700
commit17019aa27f612f4ccc7131d40c54b26864fef444 (patch)
tree5582db2778d76db878454aa1fc837aa7e5f02403
parent81f1804d45c1b698ee87ee4d4c84197df98ea4f2 (diff)
downloadsamba-17019aa27f612f4ccc7131d40c54b26864fef444.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.c13
-rw-r--r--source3/libsmb/proto.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index cfb3b162358..868ee59245b 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -339,6 +339,19 @@ uint16_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)
{
uint16_t tid = cli_state_get_tid(cli);
diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h
index dc9aa1720b2..e872e3106e7 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);
uint16_t cli_setpid(struct cli_state *cli, uint16_t pid);
uint16_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);
uint16_t cli_state_get_tid(struct cli_state *cli);
uint16_t cli_state_set_tid(struct cli_state *cli, uint16_t tid);