summaryrefslogtreecommitdiff
path: root/source3/passdb/pdb_get_set.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/passdb/pdb_get_set.c')
-rw-r--r--source3/passdb/pdb_get_set.c25
1 files changed, 6 insertions, 19 deletions
diff --git a/source3/passdb/pdb_get_set.c b/source3/passdb/pdb_get_set.c
index 0c338f317e..2da6de7270 100644
--- a/source3/passdb/pdb_get_set.c
+++ b/source3/passdb/pdb_get_set.c
@@ -151,7 +151,7 @@ const uint8* pdb_get_lanman_passwd (const SAM_ACCOUNT *sampass)
const char* pdb_get_plaintext_passwd (const SAM_ACCOUNT *sampass)
{
if (sampass) {
- return (sampass->private.plaintext_pw);
+ return ((char*)sampass->private.plaintext_pw.data);
}
else
return (NULL);
@@ -956,24 +956,14 @@ BOOL pdb_set_lanman_passwd (SAM_ACCOUNT *sampass, const uint8 pwd[16])
below)
********************************************************************/
-BOOL pdb_set_plaintext_pw_only (SAM_ACCOUNT *sampass, const char *password)
+BOOL pdb_set_plaintext_pw_only (SAM_ACCOUNT *sampass, const uint8 *password, size_t len)
{
if (!sampass)
return False;
- if (password) {
- if (sampass->private.plaintext_pw!=NULL)
- memset(sampass->private.plaintext_pw,'\0',strlen(sampass->private.plaintext_pw)+1);
- sampass->private.plaintext_pw = talloc_strdup(sampass->mem_ctx, password);
-
- if (!sampass->private.plaintext_pw) {
- DEBUG(0, ("pdb_set_unknown_str: talloc_strdup() failed!\n"));
- return False;
- }
-
- } else {
- sampass->private.plaintext_pw = NULL;
- }
+ data_blob_clear_free(&sampass->private.plaintext_pw);
+
+ sampass->private.plaintext_pw = data_blob(password, len);
return True;
}
@@ -1072,10 +1062,7 @@ BOOL pdb_set_plaintext_passwd (SAM_ACCOUNT *sampass, const char *plaintext)
if (!pdb_set_lanman_passwd (sampass, new_lanman_p16))
return False;
-
- if (!pdb_set_plaintext_pw_only (sampass, plaintext))
- return False;
-
+
if (!pdb_set_pass_changed_now (sampass))
return False;