svn commit: samba r1764 - trunk/source/utils
mimir at samba.org
mimir at samba.org
Thu Aug 12 07:05:51 GMT 2004
Author: mimir
Date: 2004-08-12 07:05:50 +0000 (Thu, 12 Aug 2004)
New Revision: 1764
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/&rev=1764&nolog=1
Log:
Passwords are hashed now in pdbedit code just before calling
passdb backend functions.
rafal
Modified:
trunk/source/utils/pdbedit.c
Changeset:
Modified: trunk/source/utils/pdbedit.c
===================================================================
--- trunk/source/utils/pdbedit.c 2004-08-12 07:04:40 UTC (rev 1763)
+++ trunk/source/utils/pdbedit.c 2004-08-12 07:05:50 UTC (rev 1764)
@@ -734,6 +734,8 @@
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
smb_ucs2_t *uni_name = NULL;
char *givenpass;
+ fstring password;
+ uchar nthash[16];
time_t lct;
if (!dom_name) return -1;
@@ -774,8 +776,19 @@
/* password */
givenpass = getpass("password:");
- memset(trust.private.pass, '\0', FSTRING_LEN);
- strncpy(trust.private.pass, givenpass, FSTRING_LEN);
+ memset(password, '\0', sizeof(password));
+ memset(trust.private.pass, '\0', sizeof(trust.private.pass));
+ strncpy(password, givenpass, FSTRING_LEN);
+
+ /* trust password is either in hashed form (NT) or plaintext (ADS)
+ so let's prepare one */
+ if (trust.private.flags & PASS_TRUST_NT) {
+ E_md4hash(password, nthash);
+ pdb_sethexpwd(trust.private.pass, nthash, 0);
+
+ } else if (trust.private.flags & PASS_TRUST_ADS) {
+ strncpy(trust.private.pass, password, sizeof(trust.private.pass));
+ }
/* last change time */
lct = time(NULL);
@@ -816,6 +829,8 @@
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
smb_ucs2_t *uni_name = NULL;
char *givenpass = NULL;
+ fstring password;
+ uchar nthash[16];
time_t lct;
if (!dom_name) return -1;
@@ -842,11 +857,20 @@
/* password */
givenpass = getpass("password (type Enter to leave it untouched):");
- if (strlen(givenpass))
- strncpy(trust.private.pass, givenpass, FSTRING_LEN);
- else
- trust.private.pass[0] = '\0';
+ memset(password, '\0', sizeof(password));
+ memset(trust.private.pass, '\0', sizeof(trust.private.pass));
+ strncpy(password, givenpass, FSTRING_LEN);
+ /* trust password is either in hashed form (NT) or plaintext (ADS)
+ so let's prepare one */
+ if (trust.private.flags & PASS_TRUST_NT) {
+ E_md4hash(password, nthash);
+ pdb_sethexpwd(trust.private.pass, nthash, 0);
+
+ } else if (trust.private.flags & PASS_TRUST_ADS) {
+ strncpy(trust.private.pass, password, sizeof(trust.private.pass));
+ }
+
/* last change time */
lct = time(NULL);
trust.private.mod_time = lct;
More information about the samba-cvs
mailing list