{
return False;
}
+ if (key->vuid == UID_FIELD_INVALID)
+ {
+ memset(usr_sess_key, 0, 16);
+ return True;
+ }
vuser = get_valid_user_struct(key);
if (vuser == NULL)
{
BOOL msrpcd_init(int c, rpcsrv_struct **l)
{
vuser_key uk;
- user_struct *vuser;
+ user_struct *vuser = NULL;
if (!get_user_creds(c, &uk))
{
return False;
}
- if (uk.vuid == UID_FIELD_INVALID)
+ if (uk.vuid != UID_FIELD_INVALID)
{
- return False;
- }
+ if (!become_vuser(&uk))
+ {
+ return False;
+ }
- if (!become_vuser(&uk))
- {
- return False;
+ vuser = get_valid_user_struct(&uk);
+ if (vuser == NULL)
+ {
+ return False;
+ }
}
-
- vuser = get_valid_user_struct(&uk);
- if (vuser == NULL)
+ else
{
- return False;
+ if (!become_guest())
+ {
+ return False;
+ }
}
(*l) = malloc(sizeof(*(*l)));
(*l)->key = uk;
(*l)->c = c;
- if (!vuser->guest)
+ if (vuser != NULL && !vuser->guest)
{
char *user = vuser->name;
if (!strequal(user,lp_guestaccount(-1)) &&
}
else
{
+#if 0
NET_USER_INFO_3 usr;
uid_t uid = getuid();
gid_t gid = getgid();
con_key.pid = getpid();
con_key.vuid = register_vuid(con_key.pid,
uid, gid,
- name, name, False,
+ name, name, False,
&usr);
+#endif
+ con_key.pid = getpid();
+ con_key.vuid = UID_FIELD_INVALID;
}
if (srv_name != NULL)
SAM_USER_INFO_12 *id12 = ctr->info.id12;
if (!set_user_info_12(tdb_usr, rid, id12))
{
+ DEBUG(10,("_samr_set_userinfo 0x12 failed\n"));
return NT_STATUS_ACCESS_DENIED;
}
break;