typedef struct user_struct {
struct user_struct *next, *prev;
uint16 vuid; /* Tag for this entry. */
- uid_t uid; /* uid of a validated user */
- gid_t gid; /* gid of a validated user */
userdom_struct user;
bool guest;
- /* following groups stuff added by ih */
- /* This groups info is needed for when we become_user() for this uid */
- int n_groups;
- gid_t *groups;
-
DATA_BLOB session_key;
char *session_keystr; /* used by utmp and pam session code.
Don't depend on vuser being non-null !!. JRA */
user_struct *vuser = get_valid_user_struct(vuid);
if(vuser != NULL) {
- DEBUG(3,(" Username of UID %d is %s\n", (int)vuser->uid,
- vuser->user.unix_name));
+ DEBUG(3,(" Username of UID %d is %s\n",
+ (int)vuser->server_info->uid,
+ vuser->user.unix_name));
}
if (!str1 || !str2 || !UserName || !p) {
}
if(vuser != NULL) {
- DEBUG(3,(" Username of UID %d is %s\n", (int)vuser->uid,
- vuser->user.unix_name));
+ DEBUG(3,(" Username of UID %d is %s\n",
+ (int)vuser->server_info->uid,
+ vuser->user.unix_name));
}
uLevel = get_safe_SVAL(param,tpscnt,p,0,-1);
talloc_steal(vuser, vuser->server_info);
- /* the next functions should be done by a SID mapping system (SMS) as
- * the new real sam db won't have reference to unix uids or gids
- */
-
- vuser->uid = server_info->uid;
- vuser->gid = server_info->gid;
-
- vuser->n_groups = server_info->n_groups;
- if (vuser->n_groups) {
- if (!(vuser->groups = (gid_t *)talloc_memdup(vuser,
- server_info->groups,
- sizeof(gid_t)*vuser->n_groups))) {
- DEBUG(0,("register_existing_vuid: "
- "failed to talloc_memdup vuser->groups\n"));
- goto fail;
- }
- }
-
vuser->guest = server_info->guest;
fstrcpy(vuser->user.unix_name, server_info->unix_name);
vuser->session_key = session_key;
DEBUG(10,("register_existing_vuid: (%u,%u) %s %s %s guest=%d\n",
- (unsigned int)vuser->uid,
- (unsigned int)vuser->gid,
+ (unsigned int)vuser->server_info->uid,
+ (unsigned int)vuser->server_info->gid,
vuser->user.unix_name, vuser->user.smb_name,
vuser->user.domain, vuser->guest ));
}
DEBUG(3,("register_existing_vuid: UNIX uid %d is UNIX user %s, "
- "and will be vuid %u\n",
- (int)vuser->uid,vuser->user.unix_name, vuser->vuid));
+ "and will be vuid %u\n", (int)vuser->server_info->uid,
+ vuser->user.unix_name, vuser->vuid));
next_vuid++;
num_validated_vuids++;
}
}
conn->vuid = vuser->vuid;
- conn->uid = vuser->uid;
- conn->gid = vuser->gid;
+ conn->uid = vuser->server_info->uid;
+ conn->gid = vuser->server_info->gid;
string_set(&conn->user,vuser->user.unix_name);
fstrcpy(user,vuser->user.unix_name);
guest = vuser->guest;
fstrcpy(sessionid.hostname, hostname);
sessionid.id_num = i; /* Only valid for utmp sessions */
sessionid.pid = pid;
- sessionid.uid = vuser->uid;
- sessionid.gid = vuser->gid;
+ sessionid.uid = vuser->server_info->uid;
+ sessionid.gid = vuser->server_info->gid;
fstrcpy(sessionid.remote_machine, get_remote_machine_name());
fstrcpy(sessionid.ip_addr_str,
client_addr(get_client_fd(),addr,sizeof(addr)));
return(True);
} else if ((current_user.conn == conn) &&
(vuser != 0) && (current_user.vuid == vuid) &&
- (current_user.ut.uid == vuser->uid)) {
+ (current_user.ut.uid == vuser->server_info->uid)) {
DEBUG(4,("change_to_user: Skipping user change - already "
"user\n"));
return(True);
num_groups = conn->ngroups;
token = conn->nt_user_token;
} else if (vuser) {
- uid = conn->admin_user ? 0 : vuser->uid;
- gid = vuser->gid;
- num_groups = vuser->n_groups;
- group_list = vuser->groups;
+ uid = conn->admin_user ? 0 : vuser->server_info->uid;
+ gid = vuser->server_info->gid;
+ num_groups = vuser->server_info->n_groups;
+ group_list = vuser->server_info->groups;
token = vuser->server_info->ptok;
} else {
DEBUG(2,("change_to_user: Invalid vuid used %d in accessing "