summaryrefslogtreecommitdiff
path: root/source3/smbd/chgpasswd.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/chgpasswd.c')
-rw-r--r--source3/smbd/chgpasswd.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/source3/smbd/chgpasswd.c b/source3/smbd/chgpasswd.c
index 3d25f33f45..31c4fa7cc9 100644
--- a/source3/smbd/chgpasswd.c
+++ b/source3/smbd/chgpasswd.c
@@ -478,12 +478,6 @@ BOOL chgpasswd(const char *name, const char *oldpass, const char *newpass, BOOL
if (!name) {
DEBUG(1, ("NULL username specfied to chgpasswd()!\n"));
}
-
- pass = Get_Pwnam(name);
- if (!pass) {
- DEBUG(1, ("Username does not exist in system passwd!\n"));
- return False;
- }
if (!oldpass) {
oldpass = "";
@@ -534,6 +528,8 @@ BOOL chgpasswd(const char *name, const char *oldpass, const char *newpass, BOOL
}
}
+ pass = Get_Pwnam(name);
+
#ifdef WITH_PAM
if (lp_pam_password_change()) {
BOOL ret;
@@ -987,8 +983,9 @@ NTSTATUS change_oem_password(SAM_ACCOUNT *hnd, char *old_passwd, char *new_passw
* to touch the unix db unless we have admin permission.
*/
- if(lp_unix_password_sync() &&
- !chgpasswd(pdb_get_username(hnd), old_passwd, new_passwd, False)) {
+ if(lp_unix_password_sync() && IS_SAM_UNIX_USER(hnd)
+ && !chgpasswd(pdb_get_username(hnd),
+ old_passwd, new_passwd, False)) {
return NT_STATUS_ACCESS_DENIED;
}