summaryrefslogtreecommitdiff
path: root/source3/libsmb/clientgen.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2011-09-12 09:16:27 +0200
committerStefan Metzmacher <metze@samba.org>2011-09-14 08:09:15 +0200
commitc682472fdf28894858d14eb95b13cb4214847ecd (patch)
tree86025b29ff1af59252d264f12f7245a291f62e5d /source3/libsmb/clientgen.c
parent0a6d0f8edaa198898f50f274275efba8de41d843 (diff)
downloadsamba-c682472fdf28894858d14eb95b13cb4214847ecd.tar.gz
samba-c682472fdf28894858d14eb95b13cb4214847ecd.tar.bz2
samba-c682472fdf28894858d14eb95b13cb4214847ecd.zip
s3:libsmb: make use of new advanded SMB signing
metze
Diffstat (limited to 'source3/libsmb/clientgen.c')
-rw-r--r--source3/libsmb/clientgen.c47
1 files changed, 30 insertions, 17 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 15e450a802..c22cd303e5 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -168,8 +168,9 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx,
int signing_state, int flags)
{
struct cli_state *cli = NULL;
- bool allow_smb_signing = false;
- bool mandatory_signing = false;
+ bool allow_smb_signing;
+ bool desire_smb_signing;
+ bool mandatory_signing;
socklen_t ss_length;
int ret;
@@ -236,31 +237,43 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx,
cli->use_level_II_oplocks = true;
}
- if (lp_client_signing()) {
- allow_smb_signing = true;
- }
-
- if (lp_client_signing() == Required) {
- mandatory_signing = true;
- }
-
- if (signing_state != Undefined) {
- allow_smb_signing = true;
+ if (signing_state == Undefined) {
+ signing_state = lp_client_signing();
}
- if (signing_state == false) {
+ switch (signing_state) {
+ case false:
+ /* never */
allow_smb_signing = false;
+ desire_smb_signing = false;
mandatory_signing = false;
- }
-
- if (signing_state == Required) {
+ break;
+ case true:
+ /* if the server supports it */
+ allow_smb_signing = true;
+ desire_smb_signing = true;
+ mandatory_signing = false;
+ break;
+ default:
+ case Undefined:
+ case Auto:
+ /* if the server requires it */
+ allow_smb_signing = true;
+ desire_smb_signing = false;
+ mandatory_signing = false;
+ break;
+ case Required:
+ /* always */
+ allow_smb_signing = true;
+ desire_smb_signing = true;
mandatory_signing = true;
+ break;
}
/* initialise signing */
cli->signing_state = smb_signing_init(cli,
allow_smb_signing,
- allow_smb_signing,
+ desire_smb_signing,
mandatory_signing);
if (!cli->signing_state) {
goto error;