From: Andrew Bartlett Date: Tue, 24 Jan 2012 07:38:09 +0000 (+1100) Subject: s3-passdb: Fix pdb_samba4 setting of plaintext passwords X-Git-Tag: tevent-0.9.15~266 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6acce6e5d71743b824a822e9b6f24dcc6d8106ca;p=thirdparty%2Fsamba.git s3-passdb: Fix pdb_samba4 setting of plaintext passwords We were setting a UTF8 password into the UTF16 clearTextPassword. Converting from CH_UNIX to CH_UTF16 should fix this. Andrew Bartlett --- diff --git a/source3/passdb/pdb_samba4.c b/source3/passdb/pdb_samba4.c index f336b8a9c61..bc3b1238c16 100644 --- a/source3/passdb/pdb_samba4.c +++ b/source3/passdb/pdb_samba4.c @@ -368,11 +368,19 @@ static int pdb_samba4_replace_by_sam(struct pdb_samba4_state *state, pw = pdb_get_plaintext_passwd(sam); if (need_update(sam, PDB_PLAINTEXT_PW)) { + struct ldb_val pw_utf16; if (pw == NULL) { return LDB_ERR_OPERATIONS_ERROR; } - ret |= ldb_msg_add_string(msg, "clearTextPassword", pw); + if (!convert_string_talloc(msg, + CH_UNIX, CH_UTF16, + pw, strlen(pw), + (void *)&pw_utf16.data, + &pw_utf16.length)) { + return LDB_ERR_OPERATIONS_ERROR; + } + ret |= ldb_msg_add_value(msg, "clearTextPassword", &pw_utf16, NULL); } else { bool changed_lm_pw = false; bool changed_nt_pw = false;