From e256d72f0cd66c374f14a122623668de888aa5e7 Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Fri, 20 Feb 2009 12:00:46 +0800 Subject: Make libsmbclient work with DFS Signed-off-by: Derrell Lipman --- source3/libsmb/libsmb_context.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'source3/libsmb/libsmb_context.c') diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c index c1af48507c..0683f97ddd 100644 --- a/source3/libsmb/libsmb_context.c +++ b/source3/libsmb/libsmb_context.c @@ -652,3 +652,40 @@ smbc_set_credentials(char *workgroup, cli_cm_set_credentials(auth_info); TALLOC_FREE(auth_info); } + +void smbc_set_credentials_with_fallback(SMBCCTX *context, + char *workgroup, + char *user, + char *password) +{ + smbc_bool use_kerberos = false; + const char *signing_state = "off"; + + if (!context || !workgroup || !*workgroup + || !user || !*user || !password + || !*password) { + return; + } + + if (smbc_getOptionUseKerberos(context)) { + use_kerberos = True; + } + + if (lp_client_signing()) { + signing_state = "on"; + } + + if (lp_client_signing() == Required) { + signing_state = "force"; + } + + smbc_set_credentials(workgroup, + user, + password, + use_kerberos, + (char *)signing_state); + + if (smbc_getOptionFallbackAfterKerberos(context)) { + cli_cm_set_fallback_after_kerberos(); + } +} -- cgit From 45630c47fcc1ab96264d816313475af405079db3 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Fri, 20 Feb 2009 09:51:36 -0500 Subject: variable grouping: just my OCD desire to keep similar things together --- source3/libsmb/libsmb_context.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'source3/libsmb/libsmb_context.c') diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c index 0683f97ddd..e4df7fcb08 100644 --- a/source3/libsmb/libsmb_context.c +++ b/source3/libsmb/libsmb_context.c @@ -655,15 +655,17 @@ smbc_set_credentials(char *workgroup, void smbc_set_credentials_with_fallback(SMBCCTX *context, char *workgroup, - char *user, - char *password) + char *user, + char *password) { smbc_bool use_kerberos = false; const char *signing_state = "off"; - if (!context || !workgroup || !*workgroup - || !user || !*user || !password - || !*password) { + if (! context || + ! workgroup || ! *workgroup || + ! user || ! *user || + ! password || ! *password) { + return; } -- cgit From 87a4c09b9bd37a967abcf874888a5d5161e7434f Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 20 Feb 2009 16:41:41 -0800 Subject: Change smbc_set_credentials_with_fallback() (unreleased) to use const approptiately. Jeremy. --- source3/libsmb/libsmb_context.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'source3/libsmb/libsmb_context.c') diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c index e4df7fcb08..c7c9903b76 100644 --- a/source3/libsmb/libsmb_context.c +++ b/source3/libsmb/libsmb_context.c @@ -654,9 +654,9 @@ smbc_set_credentials(char *workgroup, } void smbc_set_credentials_with_fallback(SMBCCTX *context, - char *workgroup, - char *user, - char *password) + const char *workgroup, + const char *user, + const char *password) { smbc_bool use_kerberos = false; const char *signing_state = "off"; @@ -681,11 +681,18 @@ void smbc_set_credentials_with_fallback(SMBCCTX *context, signing_state = "force"; } - smbc_set_credentials(workgroup, - user, - password, + /* Using CONST_DISCARD here is ugly, but + * we know that smbc_set_credentials() doesn't + * actually modify the strings, and should have + * been const from the start. We're constrained + * by the ABI here. + */ + + smbc_set_credentials(CONST_DISCARD(char *,workgroup), + CONST_DISCARD(char *,user), + CONST_DISCARD(char *,password), use_kerberos, - (char *)signing_state); + CONST_DISCARD(char *,signing_state)); if (smbc_getOptionFallbackAfterKerberos(context)) { cli_cm_set_fallback_after_kerberos(); -- cgit From cf7539abfb0f6e6956bed7a478e0cda6ab734674 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Mon, 23 Feb 2009 13:50:11 -0500 Subject: Make char* parameters const - Use const in function signatures whenever appropriate, to help prevent errant scribbling on users' buffers. smbc_set_credentials() always acted as if its formal parameters were const char *, and changing the formal declaration to specify that should not cause any change to the ABI. It is still allowable to pass a writable buffer to a function which specifies that it will not write to the buffer. I'm making this change only in master. Derrell --- source3/libsmb/libsmb_context.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'source3/libsmb/libsmb_context.c') diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c index c7c9903b76..4c12d18ab7 100644 --- a/source3/libsmb/libsmb_context.c +++ b/source3/libsmb/libsmb_context.c @@ -630,11 +630,11 @@ smbc_version(void) * Set the credentials so DFS will work when following referrals. */ void -smbc_set_credentials(char *workgroup, - char *user, - char *password, +smbc_set_credentials(const char *workgroup, + const char *user, + const char *password, smbc_bool use_kerberos, - char *signing_state) + const char *signing_state) { struct user_auth_info *auth_info; @@ -681,18 +681,8 @@ void smbc_set_credentials_with_fallback(SMBCCTX *context, signing_state = "force"; } - /* Using CONST_DISCARD here is ugly, but - * we know that smbc_set_credentials() doesn't - * actually modify the strings, and should have - * been const from the start. We're constrained - * by the ABI here. - */ - - smbc_set_credentials(CONST_DISCARD(char *,workgroup), - CONST_DISCARD(char *,user), - CONST_DISCARD(char *,password), - use_kerberos, - CONST_DISCARD(char *,signing_state)); + smbc_set_credentials(workgroup, user, password, + use_kerberos, signing_state); if (smbc_getOptionFallbackAfterKerberos(context)) { cli_cm_set_fallback_after_kerberos(); -- cgit