bool pdb_set_group_sid(struct samu *sampass, const DOM_SID *g_sid, enum pdb_value_state flag) { gid_t gid; if (!g_sid) return False; if ( !(sampass->group_sid = TALLOC_P( sampass, DOM_SID )) ) { return False; } /* if we cannot resolve the SID to gid, then just ignore it and store DOMAIN_USERS as the primary groupSID */ if ( sid_to_gid( g_sid, &gid ) ) { sid_copy(sampass->group_sid, g_sid); } else { sid_compose(sampass->group_sid, get_global_sam_sid(), DOMAIN_GROUP_RID_USERS); } DEBUG(10, ("pdb_set_group_sid: setting group sid %s\n", sid_string_dbg(sampass->group_sid))); return pdb_set_init_flags(sampass, PDB_GROUPSID, flag); }
bool pdb_set_hours(struct samu *sampass, const uint8 *hours, enum pdb_value_state flag) { if (!hours) { memset ((char *)sampass->hours, 0, MAX_HOURS_LEN); } else { memcpy (sampass->hours, hours, MAX_HOURS_LEN); } return pdb_set_init_flags(sampass, PDB_HOURS, flag); }
bool pdb_set_user_sid(struct samu *sampass, const DOM_SID *u_sid, enum pdb_value_state flag) { if (!u_sid) return False; sid_copy(&sampass->user_sid, u_sid); DEBUG(10, ("pdb_set_user_sid: setting user sid %s\n", sid_string_dbg(&sampass->user_sid))); return pdb_set_init_flags(sampass, PDB_USERSID, flag); }
bool pdb_set_nt_passwd(struct samu *sampass, const uint8 pwd[NT_HASH_LEN], enum pdb_value_state flag) { data_blob_clear_free(&sampass->nt_pw); if (pwd) { sampass->nt_pw = data_blob_talloc(sampass, pwd, NT_HASH_LEN); } else { sampass->nt_pw = data_blob_null; } return pdb_set_init_flags(sampass, PDB_NTPASSWD, flag); }
bool pdb_set_lanman_passwd(struct samu *sampass, const uint8 pwd[LM_HASH_LEN], enum pdb_value_state flag) { data_blob_clear_free(&sampass->lm_pw); /* on keep the password if we are allowing LANMAN authentication */ if (pwd && lp_lanman_auth() ) { sampass->lm_pw = data_blob_talloc(sampass, pwd, LM_HASH_LEN); } else { sampass->lm_pw = data_blob_null; } return pdb_set_init_flags(sampass, PDB_LMPASSWD, flag); }
bool pdb_set_acct_desc(struct samu *sampass, const char *acct_desc, enum pdb_value_state flag) { if (acct_desc) { sampass->acct_desc = talloc_strdup(sampass, acct_desc); if (!sampass->acct_desc) { DEBUG(0, ("pdb_set_acct_desc: talloc_strdup() failed!\n")); return False; } } else { sampass->acct_desc = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_ACCTDESC, flag); }
bool pdb_set_comment(struct samu *sampass, const char *comment, enum pdb_value_state flag) { if (comment) { sampass->comment = talloc_strdup(sampass, comment); if (!sampass->comment) { DEBUG(0, ("pdb_set_comment: talloc_strdup() failed!\n")); return False; } } else { sampass->comment = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_COMMENT, flag); }
bool pdb_set_munged_dial(struct samu *sampass, const char *munged_dial, enum pdb_value_state flag) { if (munged_dial) { sampass->munged_dial = talloc_strdup(sampass, munged_dial); if (!sampass->munged_dial) { DEBUG(0, ("pdb_set_munged_dial: talloc_strdup() failed!\n")); return False; } } else { sampass->munged_dial = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_MUNGEDDIAL, flag); }
bool pdb_set_pw_history(struct samu *sampass, const uint8 *pwd, uint32 historyLen, enum pdb_value_state flag) { if (historyLen && pwd){ sampass->nt_pw_his = data_blob_talloc(sampass, pwd, historyLen*PW_HISTORY_ENTRY_LEN); if (!sampass->nt_pw_his.length) { DEBUG(0, ("pdb_set_pw_history: data_blob_talloc() failed!\n")); return False; } } else { sampass->nt_pw_his = data_blob_talloc(sampass, NULL, 0); } return pdb_set_init_flags(sampass, PDB_PWHISTORY, flag); }
bool pdb_set_backend_private_data(struct samu *sampass, void *private_data, void (*free_fn)(void **), const struct pdb_methods *my_methods, enum pdb_value_state flag) { if (sampass->backend_private_data && sampass->backend_private_data_free_fn) { sampass->backend_private_data_free_fn( &sampass->backend_private_data); } sampass->backend_private_data = private_data; sampass->backend_private_data_free_fn = free_fn; sampass->backend_private_methods = my_methods; return pdb_set_init_flags(sampass, PDB_BACKEND_PRIVATE_DATA, flag); }
bool pdb_set_logon_script(struct samu *sampass, const char *logon_script, enum pdb_value_state flag) { if (logon_script) { DEBUG(10, ("pdb_set_logon_script: setting logon script %s, was %s\n", logon_script, (sampass->logon_script)?(sampass->logon_script):"NULL")); sampass->logon_script = talloc_strdup(sampass, logon_script); if (!sampass->logon_script) { DEBUG(0, ("pdb_set_logon_script: talloc_strdup() failed!\n")); return False; } } else { sampass->logon_script = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_LOGONSCRIPT, flag); }
bool pdb_set_fullname(struct samu *sampass, const char *full_name, enum pdb_value_state flag) { if (full_name) { DEBUG(10, ("pdb_set_full_name: setting full name %s, was %s\n", full_name, (sampass->full_name)?(sampass->full_name):"NULL")); sampass->full_name = talloc_strdup(sampass, full_name); if (!sampass->full_name) { DEBUG(0, ("pdb_set_fullname: talloc_strdup() failed!\n")); return False; } } else { sampass->full_name = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_FULLNAME, flag); }
bool pdb_set_workstations(struct samu *sampass, const char *workstations, enum pdb_value_state flag) { if (workstations) { DEBUG(10, ("pdb_set_workstations: setting workstations %s, was %s\n", workstations, (sampass->workstations)?(sampass->workstations):"NULL")); sampass->workstations = talloc_strdup(sampass, workstations); if (!sampass->workstations) { DEBUG(0, ("pdb_set_workstations: talloc_strdup() failed!\n")); return False; } } else { sampass->workstations = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_WORKSTATIONS, flag); }
bool pdb_set_profile_path(struct samu *sampass, const char *profile_path, enum pdb_value_state flag) { if (profile_path) { DEBUG(10, ("pdb_set_profile_path: setting profile path %s, was %s\n", profile_path, (sampass->profile_path)?(sampass->profile_path):"NULL")); sampass->profile_path = talloc_strdup(sampass, profile_path); if (!sampass->profile_path) { DEBUG(0, ("pdb_set_profile_path: talloc_strdup() failed!\n")); return False; } } else { sampass->profile_path = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_PROFILE, flag); }
bool pdb_set_plaintext_pw_only(struct samu *sampass, const char *password, enum pdb_value_state flag) { if (password) { if (sampass->plaintext_pw!=NULL) memset(sampass->plaintext_pw,'\0',strlen(sampass->plaintext_pw)+1); sampass->plaintext_pw = talloc_strdup(sampass, password); if (!sampass->plaintext_pw) { DEBUG(0, ("pdb_set_unknown_str: talloc_strdup() failed!\n")); return False; } } else { sampass->plaintext_pw = NULL; } return pdb_set_init_flags(sampass, PDB_PLAINTEXT_PW, flag); }
bool pdb_set_domain(struct samu *sampass, const char *domain, enum pdb_value_state flag) { if (domain) { DEBUG(10, ("pdb_set_domain: setting domain %s, was %s\n", domain, (sampass->domain)?(sampass->domain):"NULL")); sampass->domain = talloc_strdup(sampass, domain); if (!sampass->domain) { DEBUG(0, ("pdb_set_domain: talloc_strdup() failed!\n")); return False; } } else { sampass->domain = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_DOMAIN, flag); }
bool pdb_set_homedir(struct samu *sampass, const char *home_dir, enum pdb_value_state flag) { if (home_dir) { DEBUG(10, ("pdb_set_homedir: setting home dir %s, was %s\n", home_dir, (sampass->home_dir)?(sampass->home_dir):"NULL")); sampass->home_dir = talloc_strdup(sampass, home_dir); if (!sampass->home_dir) { DEBUG(0, ("pdb_set_home_dir: talloc_strdup() failed!\n")); return False; } } else { sampass->home_dir = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_SMBHOME, flag); }
bool pdb_set_dir_drive(struct samu *sampass, const char *dir_drive, enum pdb_value_state flag) { if (dir_drive) { DEBUG(10, ("pdb_set_dir_drive: setting dir drive %s, was %s\n", dir_drive, (sampass->dir_drive)?(sampass->dir_drive):"NULL")); sampass->dir_drive = talloc_strdup(sampass, dir_drive); if (!sampass->dir_drive) { DEBUG(0, ("pdb_set_dir_drive: talloc_strdup() failed!\n")); return False; } } else { sampass->dir_drive = PDB_NOT_QUITE_NULL; } return pdb_set_init_flags(sampass, PDB_DRIVE, flag); }
bool pdb_set_unknown_6(struct samu *sampass, uint32 unkn, enum pdb_value_state flag) { sampass->unknown_6 = unkn; return pdb_set_init_flags(sampass, PDB_UNKNOWN6, flag); }
bool pdb_set_logon_count(struct samu *sampass, uint16 logon_count, enum pdb_value_state flag) { sampass->logon_count = logon_count; return pdb_set_init_flags(sampass, PDB_LOGON_COUNT, flag); }
bool pdb_set_bad_password_count(struct samu *sampass, uint16 bad_password_count, enum pdb_value_state flag) { sampass->bad_password_count = bad_password_count; return pdb_set_init_flags(sampass, PDB_BAD_PASSWORD_COUNT, flag); }
bool pdb_set_kickoff_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag) { sampass->kickoff_time = mytime; return pdb_set_init_flags(sampass, PDB_KICKOFFTIME, flag); }
bool pdb_set_bad_password_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag) { sampass->bad_password_time = mytime; return pdb_set_init_flags(sampass, PDB_BAD_PASSWORD_TIME, flag); }
bool pdb_set_pass_must_change_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag) { sampass->pass_must_change_time = mytime; return pdb_set_init_flags(sampass, PDB_MUSTCHANGETIME, flag); }
bool pdb_set_logon_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag) { sampass->logon_time = mytime; return pdb_set_init_flags(sampass, PDB_LOGONTIME, flag); }
bool pdb_set_hours_len(struct samu *sampass, uint32 len, enum pdb_value_state flag) { sampass->hours_len = len; return pdb_set_init_flags(sampass, PDB_HOURSLEN, flag); }
bool pdb_set_acct_ctrl(struct samu *sampass, uint32 acct_ctrl, enum pdb_value_state flag) { sampass->acct_ctrl = acct_ctrl; return pdb_set_init_flags(sampass, PDB_ACCTCTRL, flag); }
bool pdb_set_pass_last_set_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag) { sampass->pass_last_set_time = mytime; return pdb_set_init_flags(sampass, PDB_PASSLASTSET, flag); }
bool pdb_set_logon_divs(struct samu *sampass, uint16 hours, enum pdb_value_state flag) { sampass->logon_divs = hours; return pdb_set_init_flags(sampass, PDB_LOGONDIVS, flag); }