summaryrefslogtreecommitdiff
path: root/source3/libsmb/pwd_cache.c
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1999-10-07 22:10:29 +0000
committerLuke Leighton <lkcl@samba.org>1999-10-07 22:10:29 +0000
commitcba7662da1fd9ed8bd9f9969417adf1fe5f0d33b (patch)
treeeae7890b1c9c03c86e86dd86a2966fc5a585b99a /source3/libsmb/pwd_cache.c
parenteb9268550f2330d4a9a3381f560bd7d70743e19a (diff)
downloadsamba-cba7662da1fd9ed8bd9f9969417adf1fe5f0d33b.tar.gz
samba-cba7662da1fd9ed8bd9f9969417adf1fe5f0d33b.tar.bz2
samba-cba7662da1fd9ed8bd9f9969417adf1fe5f0d33b.zip
- added rudimentary CAP_UNICODE support because i thought it was part of
a problem i was having. - added rudimentary CAP_STATUS32 support for same reason. - added hard-coded, copy-the-same-data-from-over-the-wire version of CAP_EXTENDED_SECURITY, which is a security-blob to encapsulate GSSAPI which encodes SPNEGO which is used to negotiate Kerberos or NTLMSSP. i have implemented NTLMSSP which negotiates NTLMv1 or NTLMv2 and 40-bit or 128-bit etc. i have implemented NTLMv1 / 40-bit. *whew*. (This used to be commit e5b80bd2f76fda70e41e4a9007eb035dab92ed8e)
Diffstat (limited to 'source3/libsmb/pwd_cache.c')
-rw-r--r--source3/libsmb/pwd_cache.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/source3/libsmb/pwd_cache.c b/source3/libsmb/pwd_cache.c
index 655df5be8a..c8b0e6a442 100644
--- a/source3/libsmb/pwd_cache.c
+++ b/source3/libsmb/pwd_cache.c
@@ -34,6 +34,7 @@ void pwd_init(struct pwd_info *pwd)
bzero(pwd->smb_nt_pwd, sizeof(pwd->smb_nt_pwd));
bzero(pwd->smb_lm_owf, sizeof(pwd->smb_lm_owf));
bzero(pwd->smb_nt_owf, sizeof(pwd->smb_nt_owf));
+ pwd->nt_owf_len = 0;
pwd->null_pwd = True; /* safest option... */
pwd->cleartext = False;
@@ -259,6 +260,14 @@ void pwd_make_lm_nt_owf2(struct pwd_info *pwd, const uchar srv_key[8],
****************************************************************************/
void pwd_make_lm_nt_owf(struct pwd_info *pwd, uchar cryptkey[8])
{
+ if (pwd->null_pwd)
+ {
+#ifdef DEBUG_PASSWORD
+ DEBUG(100,("pwd_make_lm_nt_owf: NULL password\n"));
+#endif
+ pwd->nt_owf_len = 0;
+ return;
+ }
pwd_deobfuscate(pwd);
SMBOWFencrypt(pwd->smb_lm_pwd, cryptkey, pwd->smb_lm_owf);
@@ -291,6 +300,18 @@ void pwd_make_lm_nt_owf(struct pwd_info *pwd, uchar cryptkey[8])
void pwd_get_lm_nt_owf(struct pwd_info *pwd, uchar lm_owf[24],
uchar *nt_owf, size_t *nt_owf_len)
{
+ if (pwd->null_pwd)
+ {
+#ifdef DEBUG_PASSWORD
+ DEBUG(100,("pwd_get_lm_nt_owf: NULL password\n"));
+#endif
+ if (nt_owf_len != NULL)
+ {
+ *nt_owf_len = 0;
+ }
+ return;
+ }
+
pwd_deobfuscate(pwd);
if (lm_owf != NULL)
{