summaryrefslogtreecommitdiff
path: root/source3/libsmb
diff options
context:
space:
mode:
authorDerrell Lipman <derrell.lipman@unwireduniverse.com>2008-03-17 11:34:25 -0400
committerDerrell Lipman <derrell.lipman@unwireduniverse.com>2008-03-17 11:34:25 -0400
commit8b0783072aad83f5a2ce10737ca9d3077af95bf9 (patch)
treeeb282d3e5e048e6f173c4873070f256d69326fe7 /source3/libsmb
parent3ff8a21ca32ee6f800a94ecf00e6020105ad19c9 (diff)
downloadsamba-8b0783072aad83f5a2ce10737ca9d3077af95bf9.tar.gz
samba-8b0783072aad83f5a2ce10737ca9d3077af95bf9.tar.bz2
samba-8b0783072aad83f5a2ce10737ca9d3077af95bf9.zip
Fix use of AuthDataWithContext capability
During my initial plans for, and the subsequent discussion of a more significant change to the API for libsmbclient, I had removed the AuthDataWithContext usage, in favor of a more generalized planned interface. When the API returned to its original state, I neglected to reinsert this code. Use of an authentication function with the context can be tested using examples/libsmbclient/testbrowse -C Derrell (This used to be commit 38eab68dfb2d8abe8ad00f5a86fc54c778d0d303)
Diffstat (limited to 'source3/libsmb')
-rw-r--r--source3/libsmb/libsmb_context.c3
-rw-r--r--source3/libsmb/libsmb_server.c22
2 files changed, 20 insertions, 5 deletions
diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c
index 3e67943c83..dd78bcee35 100644
--- a/source3/libsmb/libsmb_context.c
+++ b/source3/libsmb/libsmb_context.c
@@ -421,7 +421,8 @@ smbc_init_context(SMBCCTX *context)
return NULL;
}
- if (!smbc_getFunctionAuthData(context) ||
+ if ((!smbc_getFunctionAuthData(context) &&
+ !smbc_getFunctionAuthDataWithContext(context)) ||
smbc_getDebug(context) < 0 ||
smbc_getDebug(context) > 100) {
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
index 37612c6e39..7af5ca3a24 100644
--- a/source3/libsmb/libsmb_server.c
+++ b/source3/libsmb/libsmb_server.c
@@ -101,15 +101,29 @@ SMBC_call_auth_fn(TALLOC_CTX *ctx,
fstring workgroup;
fstring username;
fstring password;
+ smbc_get_auth_data_with_context_fn auth_with_context_fn;
strlcpy(workgroup, *pp_workgroup, sizeof(workgroup));
strlcpy(username, *pp_username, sizeof(username));
strlcpy(password, *pp_password, sizeof(password));
- smbc_getFunctionAuthData(context)(server, share,
- workgroup, sizeof(workgroup),
- username, sizeof(username),
- password, sizeof(password));
+ /* See if there's an authentication with context function provided */
+ auth_with_context_fn = smbc_getFunctionAuthDataWithContext(context);
+ if (auth_with_context_fn)
+ {
+ (* auth_with_context_fn)(context,
+ server, share,
+ workgroup, sizeof(workgroup),
+ username, sizeof(username),
+ password, sizeof(password));
+ }
+ else
+ {
+ smbc_getFunctionAuthData(context)(server, share,
+ workgroup, sizeof(workgroup),
+ username, sizeof(username),
+ password, sizeof(password));
+ }
TALLOC_FREE(*pp_workgroup);
TALLOC_FREE(*pp_username);