diff options
Diffstat (limited to 'source/samrd/srv_samr_usr_tdb.c')
-rw-r--r-- | source/samrd/srv_samr_usr_tdb.c | 9 |
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); |