diff options
Diffstat (limited to 'source3/auth')
-rw-r--r-- | source3/auth/auth_unix.c | 7 | ||||
-rw-r--r-- | source3/auth/pass_check.c | 8 |
2 files changed, 8 insertions, 7 deletions
diff --git a/source3/auth/auth_unix.c b/source3/auth/auth_unix.c index c50ac78ee4..87cfdb9dd5 100644 --- a/source3/auth/auth_unix.c +++ b/source3/auth/auth_unix.c @@ -37,16 +37,23 @@ static NTSTATUS check_unix_security(const struct auth_context *auth_context, { NTSTATUS nt_status; struct passwd *pass = NULL; + const char *rhost; + char addr[INET6_ADDRSTRLEN]; DEBUG(10, ("Check auth for: [%s]\n", user_info->mapped.account_name)); become_root(); pass = Get_Pwnam_alloc(talloc_tos(), user_info->mapped.account_name); + rhost = client_name(smbd_server_fd()); + if (strequal(rhost,"UNKNOWN")) + rhost = client_addr(smbd_server_fd(), addr, sizeof(addr)); + /** @todo This call assumes a ASCII password, no charset transformation is done. We may need to revisit this **/ nt_status = pass_check(pass, pass ? pass->pw_name : user_info->mapped.account_name, + rhost, user_info->password.plaintext, true); diff --git a/source3/auth/pass_check.c b/source3/auth/pass_check.c index 80e7da91df..c61a10ba1b 100644 --- a/source3/auth/pass_check.c +++ b/source3/auth/pass_check.c @@ -660,6 +660,7 @@ return NT_STATUS_OK on correct match, appropriate error otherwise NTSTATUS pass_check(const struct passwd *pass, const char *user, + const char *rhost, const char *password, bool run_cracker) { @@ -668,13 +669,6 @@ NTSTATUS pass_check(const struct passwd *pass, NTSTATUS nt_status; - const char *rhost; - char addr[INET6_ADDRSTRLEN]; - - rhost = client_name(smbd_server_fd()); - if (strequal(rhost,"UNKNOWN")) - rhost = client_addr(smbd_server_fd(), addr, sizeof(addr)); - #ifdef DEBUG_PASSWORD DEBUG(100, ("checking user=[%s] pass=[%s]\n", user, password)); #endif |