summaryrefslogtreecommitdiffstats
path: root/source/libsmb
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1998-10-10 00:46:28 +0000
committerLuke Leighton <lkcl@samba.org>1998-10-10 00:46:28 +0000
commitdfb48aab6153e53a5efd1f8ee518375cc584b101 (patch)
treef964786620142391dc8e2f0c2be4b5726c985358 /source/libsmb
parent8a7ac4a25d177235a98c0f84f97ee50432fb6359 (diff)
downloadsamba-dfb48aab6153e53a5efd1f8ee518375cc584b101.tar.gz
samba-dfb48aab6153e53a5efd1f8ee518375cc584b101.tar.xz
samba-dfb48aab6153e53a5efd1f8ee518375cc584b101.zip
dce/rpc
Diffstat (limited to 'source/libsmb')
-rw-r--r--source/libsmb/clientgen.c2
-rw-r--r--source/libsmb/smbencrypt.c18
2 files changed, 15 insertions, 5 deletions
diff --git a/source/libsmb/clientgen.c b/source/libsmb/clientgen.c
index 72d7ca935b2..64e67c55221 100644
--- a/source/libsmb/clientgen.c
+++ b/source/libsmb/clientgen.c
@@ -2052,7 +2052,7 @@ BOOL cli_oem_change_password(struct cli_state *cli, char *user, char *new_passwo
strupper(upper_case_old_pw);
E_P16((uchar *)upper_case_old_pw, old_pw_hash);
- if (!make_oem_passwd_hash( data, new_password, old_pw_hash))
+ if (!make_oem_passwd_hash( data, new_password, old_pw_hash, False))
{
return False;
}
diff --git a/source/libsmb/smbencrypt.c b/source/libsmb/smbencrypt.c
index 27c19d58365..7caf417ea1f 100644
--- a/source/libsmb/smbencrypt.c
+++ b/source/libsmb/smbencrypt.c
@@ -190,10 +190,9 @@ void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24)
#endif
}
-
-BOOL make_oem_passwd_hash(char data[516], char *passwd, char old_pw_hash[16])
+BOOL make_oem_passwd_hash(char data[516], char *passwd, char old_pw_hash[16], BOOL unicode)
{
- int new_pw_len = strlen(passwd);
+ int new_pw_len = strlen(passwd) * (unicode ? 2 : 1);
if (new_pw_len > 512)
{
@@ -208,9 +207,20 @@ BOOL make_oem_passwd_hash(char data[516], char *passwd, char old_pw_hash[16])
* decrypt. JRA.
*/
generate_random_buffer((unsigned char *)data, 516, False);
- fstrcpy( &data[512 - new_pw_len], passwd);
+ if (unicode)
+ {
+ struni2( (uint16*)(&data[512 - new_pw_len]), passwd);
+ }
+ else
+ {
+ fstrcpy( &data[512 - new_pw_len], passwd);
+ }
SIVAL(data, 512, new_pw_len);
+#ifdef DEBUG_PASSWORD
+ DEBUG(100,("make_oem_passwd_hash\n"));
+ dump_data(100, data, 516);
+#endif
SamOEMhash( (unsigned char *)data, (unsigned char *)old_pw_hash, True);
}