コード例 #1
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #2
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #3
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #4
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #5
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #6
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #7
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #8
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #9
0
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);
}
コード例 #10
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #11
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #12
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #13
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #14
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #15
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #16
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #17
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #18
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #19
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #20
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #21
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #22
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #23
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #24
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #25
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #26
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #27
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #28
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}
コード例 #29
0
ファイル: pdb_get_set.c プロジェクト: endisd/samba
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);
}