summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/libsmbclient.h6
-rw-r--r--source3/libsmb/libsmb_context.c21
2 files changed, 17 insertions, 10 deletions
diff --git a/source3/include/libsmbclient.h b/source3/include/libsmbclient.h
index efc471c85b..8c642b1794 100644
--- a/source3/include/libsmbclient.h
+++ b/source3/include/libsmbclient.h
@@ -2692,9 +2692,9 @@ smbc_set_credentials(char *workgroup,
void
smbc_set_credentials_with_fallback(SMBCCTX *ctx,
- char *workgroup,
- char *user,
- char *password);
+ const char *workgroup,
+ const char *user,
+ const char *password);
/**
* @ingroup structure
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();