diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-12-27 21:30:49 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-12-28 22:39:19 +1100 |
commit | 1baf91639919a96d305196da03e38097ed6ba46f (patch) | |
tree | b351e41601f29e05b0fbd18c9a769a6be02adcf6 | |
parent | cfb9a9d650a0217eaa751963f055f8cdd7aa3392 (diff) | |
download | samba-1baf91639919a96d305196da03e38097ed6ba46f.tar.gz samba-1baf91639919a96d305196da03e38097ed6ba46f.tar.bz2 samba-1baf91639919a96d305196da03e38097ed6ba46f.zip |
credentials: Always honour the return value of E_deshash()
When this returns false, the hash value is not correct as the password
could not be converted into an uppercase, 14 char or less ASCII string.
Andrew Bartlett
-rw-r--r-- | auth/credentials/credentials_ntlm.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/auth/credentials/credentials_ntlm.c b/auth/credentials/credentials_ntlm.c index 7f4af4f08c..2d6d6f6c55 100644 --- a/auth/credentials/credentials_ntlm.c +++ b/auth/credentials/credentials_ntlm.c @@ -174,8 +174,7 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred lm_response = nt_response; /* LM Key is incompatible with 'long' passwords */ *flags &= ~CLI_CRED_LANMAN_AUTH; - } else { - E_deshash(password, lm_hash); + } else if (E_deshash(password, lm_hash)) { lm_session_key = data_blob_talloc(mem_ctx, NULL, 16); memcpy(lm_session_key.data, lm_hash, 8); memset(&lm_session_key.data[8], '\0', 8); @@ -193,8 +192,7 @@ _PUBLIC_ NTSTATUS cli_credentials_get_ntlm_response(struct cli_credentials *cred *flags &= ~CLI_CRED_LANMAN_AUTH; password = cli_credentials_get_password(cred); - if (password) { - E_deshash(password, lm_hash); + if (password && E_deshash(password, lm_hash)) { lm_session_key = data_blob_talloc(mem_ctx, NULL, 16); memcpy(lm_session_key.data, lm_hash, 8); memset(&lm_session_key.data[8], '\0', 8); |