summaryrefslogtreecommitdiff
path: root/source/samrd/srv_samr_usr_tdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/samrd/srv_samr_usr_tdb.c')
-rw-r--r--source/samrd/srv_samr_usr_tdb.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/source/samrd/srv_samr_usr_tdb.c b/source/samrd/srv_samr_usr_tdb.c
index 448b37a4bc4..4a4a942cc09 100644
--- a/source/samrd/srv_samr_usr_tdb.c
+++ b/source/samrd/srv_samr_usr_tdb.c
@@ -550,6 +550,8 @@ static BOOL set_user_info_23(TDB_CONTEXT * usr_tdb,
static uchar lm_hash[16];
UNISTR2 new_pw;
uint32 len;
+ char buf[512];
+ int i;
if (id23 == NULL)
{
@@ -557,7 +559,7 @@ static BOOL set_user_info_23(TDB_CONTEXT * usr_tdb,
return False;
}
- if (!decode_pw_buffer(id23->pass, (char *)new_pw.buffer, 256, &len))
+ if (!decode_pw_buffer(id23->pass, buf, 256, &len))
{
return False;
}
@@ -565,6 +567,11 @@ static BOOL set_user_info_23(TDB_CONTEXT * usr_tdb,
new_pw.uni_max_len = len / 2;
new_pw.uni_str_len = len / 2;
+ for (i = 0; i < new_pw.uni_str_len; i++)
+ {
+ new_pw.buffer[i] = SVAL(buf, i*2);
+ }
+
nt_lm_owf_genW(&new_pw, nt_hash, lm_hash);
return tdb_set_userinfo_23(usr_tdb, id23, lm_hash, nt_hash);