diff options
Diffstat (limited to 'source3/passdb')
-rw-r--r-- | source3/passdb/machine_sid.c | 15 | ||||
-rw-r--r-- | source3/passdb/pdb_smbpasswd.c | 54 |
2 files changed, 34 insertions, 35 deletions
diff --git a/source3/passdb/machine_sid.c b/source3/passdb/machine_sid.c index c7c3cc474b..5b7abfe438 100644 --- a/source3/passdb/machine_sid.c +++ b/source3/passdb/machine_sid.c @@ -5,17 +5,17 @@ Copyright (C) Andrew Tridgell 2002 Copyright (C) Gerald (Jerry) Carter 2000 Copyright (C) Stefan (metze) Metzmacher 2002 - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -42,12 +42,12 @@ static bool read_sid_from_file(const char *fname, DOM_SID *sid) bool ret; lines = file_lines_load(fname, &numlines,0, NULL); - + if (!lines || numlines < 1) { if (lines) TALLOC_FREE(lines); return False; } - + ret = string_to_sid(sid, lines[0]); TALLOC_FREE(lines); return ret; @@ -81,7 +81,7 @@ static DOM_SID *pdb_generate_sam_sid(void) DOM_SID domain_sid; char *fname = NULL; DOM_SID *sam_sid; - + if(!(sam_sid=SMB_MALLOC_P(DOM_SID))) return NULL; @@ -124,7 +124,6 @@ static DOM_SID *pdb_generate_sam_sid(void) } return sam_sid; - } /* check for an old MACHINE.SID file for backwards compatibility */ @@ -185,7 +184,7 @@ DOM_SID *get_global_sam_sid(void) if (global_sam_sid != NULL) return global_sam_sid; - + /* * memory for global_sam_sid is allocated in * pdb_generate_sam_sid() as needed diff --git a/source3/passdb/pdb_smbpasswd.c b/source3/passdb/pdb_smbpasswd.c index f465d34c88..d584d0ea79 100644 --- a/source3/passdb/pdb_smbpasswd.c +++ b/source3/passdb/pdb_smbpasswd.c @@ -30,7 +30,7 @@ else. However, smb_passwd is limited to the information stored by an smbpasswd entry */ - + struct smb_passwd { uint32 smb_userid; /* this is actually the unix uid_t */ @@ -47,10 +47,10 @@ struct smbpasswd_privates { /* used for maintain locks on the smbpasswd file */ int pw_file_lock_depth; - + /* Global File pointer */ FILE *pw_file; - + /* formerly static variables */ struct smb_passwd pw_buf; fstring user_name; @@ -168,7 +168,7 @@ static void pdb_init_smb(struct smb_passwd *user) if (user == NULL) return; ZERO_STRUCTP (user); - + user->pass_last_set_time = (time_t)0; } @@ -224,7 +224,7 @@ creating file %s\n", pfile)); break; } } - + for(race_loop = 0; race_loop < 5; race_loop++) { DEBUG(10, ("startsmbfilepwent_internal: opening file %s\n", pfile)); @@ -1193,7 +1193,7 @@ static bool build_smb_pass (struct smb_passwd *smb_pw, const struct samu *sampas if (!IS_SAM_DEFAULT(sampass, PDB_USERSID)) { rid = pdb_get_user_rid(sampass); - + /* If the user specified a RID, make sure its able to be both stored and retreived */ if (rid == DOMAIN_USER_RID_GUEST) { struct passwd *passwd = getpwnam_alloc(NULL, lp_guestaccount()); @@ -1230,7 +1230,7 @@ static bool build_sam_account(struct smbpasswd_privates *smbpasswd_state, struct samu *sam_pass, const struct smb_passwd *pw_buf) { struct passwd *pwfile; - + if ( !sam_pass ) { DEBUG(5,("build_sam_account: struct samu is NULL\n")); return False; @@ -1243,14 +1243,14 @@ static bool build_sam_account(struct smbpasswd_privates *smbpasswd_state, "%u is not in unix passwd database!\n", pw_buf->smb_name, pw_buf->smb_userid)); return False; } - + if ( !NT_STATUS_IS_OK( samu_set_unix(sam_pass, pwfile )) ) return False; - + TALLOC_FREE(pwfile); /* set remaining fields */ - + if (!pdb_set_nt_passwd (sam_pass, pw_buf->smb_nt_passwd, PDB_SET)) return False; if (!pdb_set_lanman_passwd (sam_pass, pw_buf->smb_passwd, PDB_SET)) @@ -1258,7 +1258,7 @@ static bool build_sam_account(struct smbpasswd_privates *smbpasswd_state, pdb_set_acct_ctrl (sam_pass, pw_buf->acct_ctrl, PDB_SET); pdb_set_pass_last_set_time (sam_pass, pw_buf->pass_last_set_time, PDB_SET); pdb_set_pass_can_change_time (sam_pass, pw_buf->pass_last_set_time, PDB_SET); - + return True; } @@ -1294,21 +1294,21 @@ static NTSTATUS smbpasswd_getsampwnam(struct pdb_methods *my_methods, while ( ((smb_pw=getsmbfilepwent(smbpasswd_state, fp)) != NULL)&& (!strequal(smb_pw->smb_name, username)) ) /* do nothing....another loop */ ; - + endsmbfilepwent(fp, &(smbpasswd_state->pw_file_lock_depth)); /* did we locate the username in smbpasswd */ if (smb_pw == NULL) return nt_status; - + DEBUG(10, ("getsampwnam (smbpasswd): found by name: %s\n", smb_pw->smb_name)); if (!sam_acct) { DEBUG(10,("getsampwnam (smbpasswd): struct samu is NULL\n")); return nt_status; } - + /* now build the struct samu */ if (!build_sam_account(smbpasswd_state, sam_acct, smb_pw)) return nt_status; @@ -1324,7 +1324,7 @@ static NTSTATUS smbpasswd_getsampwsid(struct pdb_methods *my_methods, struct sam struct smb_passwd *smb_pw; FILE *fp = NULL; uint32 rid; - + DEBUG(10, ("smbpasswd_getsampwrid: search by sid: %s\n", sid_string_dbg(sid))); @@ -1358,9 +1358,9 @@ static NTSTATUS smbpasswd_getsampwsid(struct pdb_methods *my_methods, struct sam /* did we locate the username in smbpasswd */ if (smb_pw == NULL) return nt_status; - + DEBUG(10, ("getsampwrid (smbpasswd): found by name: %s\n", smb_pw->smb_name)); - + if (!sam_acct) { DEBUG(10,("getsampwrid: (smbpasswd) struct samu is NULL\n")); return nt_status; @@ -1387,12 +1387,12 @@ static NTSTATUS smbpasswd_add_sam_account(struct pdb_methods *my_methods, struct { struct smbpasswd_privates *smbpasswd_state = (struct smbpasswd_privates*)my_methods->private_data; struct smb_passwd smb_pw; - + /* convert the struct samu */ if (!build_smb_pass(&smb_pw, sampass)) { return NT_STATUS_UNSUCCESSFUL; } - + /* add the entry */ return add_smbfilepwd_entry(smbpasswd_state, &smb_pw); } @@ -1401,19 +1401,19 @@ static NTSTATUS smbpasswd_update_sam_account(struct pdb_methods *my_methods, str { struct smbpasswd_privates *smbpasswd_state = (struct smbpasswd_privates*)my_methods->private_data; struct smb_passwd smb_pw; - + /* convert the struct samu */ if (!build_smb_pass(&smb_pw, sampass)) { DEBUG(0, ("smbpasswd_update_sam_account: build_smb_pass failed!\n")); return NT_STATUS_UNSUCCESSFUL; } - + /* update the entry */ if(!mod_smbfilepwd_entry(smbpasswd_state, &smb_pw)) { DEBUG(0, ("smbpasswd_update_sam_account: mod_smbfilepwd_entry failed!\n")); return NT_STATUS_UNSUCCESSFUL; } - + return NT_STATUS_OK; } @@ -1445,7 +1445,7 @@ static NTSTATUS smbpasswd_rename_sam_account (struct pdb_methods *my_methods, if ( !(new_acct = samu_new( NULL )) ) { return NT_STATUS_NO_MEMORY; } - + if ( !pdb_copy_sam_account( new_acct, old_acct ) || !pdb_set_username(new_acct, newname, PDB_CHANGED)) { @@ -1516,7 +1516,7 @@ done: if (new_acct) TALLOC_FREE(new_acct); - + return (ret); } @@ -1528,9 +1528,9 @@ static uint32_t smbpasswd_capabilities(struct pdb_methods *methods) static void free_private_data(void **vp) { struct smbpasswd_privates **privates = (struct smbpasswd_privates**)vp; - + endsmbfilepwent((*privates)->pw_file, &((*privates)->pw_file_lock_depth)); - + *privates = NULL; /* No need to free any further, as it is talloc()ed */ } @@ -1698,7 +1698,7 @@ static NTSTATUS pdb_init_smbpasswd( struct pdb_methods **pdb_method, const char } else { privates->smbpasswd_file = talloc_strdup(*pdb_method, lp_smb_passwd_file()); } - + if (!privates->smbpasswd_file) { DEBUG(0, ("talloc_strdp() failed for storing smbpasswd location!\n")); return NT_STATUS_NO_MEMORY; |