diff options
-rw-r--r-- | source3/include/smb.h | 11 | ||||
-rw-r--r-- | source3/lib/substitute.c | 4 | ||||
-rw-r--r-- | source3/locking/posix.c | 3 | ||||
-rw-r--r-- | source3/param/loadparm.c | 2 | ||||
-rw-r--r-- | source3/rpc_server/srv_netlog.c | 2 | ||||
-rw-r--r-- | source3/rpc_server/srv_pipe_hnd.c | 4 | ||||
-rw-r--r-- | source3/smbd/lanman.c | 7 | ||||
-rw-r--r-- | source3/smbd/password.c | 24 | ||||
-rw-r--r-- | source3/smbd/process.c | 2 | ||||
-rw-r--r-- | source3/smbd/uid.c | 2 |
10 files changed, 34 insertions, 27 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h index f61c8cbbad..a03d7a0bcb 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -603,14 +603,19 @@ struct dcinfo }; +typedef struct { + fstring smb_name; /* user name from the client */ + fstring unix_name; /* unix user name of a validated user */ + fstring real_name; /* to store real name from password file - simeon */ + fstring domain; /* domain that the client specified */ +} userdom_struct; + typedef struct { uid_t uid; /* uid of a validated user */ gid_t gid; /* gid of a validated user */ - fstring requested_name; /* user name from the client */ - fstring name; /* unix user name of a validated user */ - fstring real_name; /* to store real name from password file - simeon */ + userdom_struct user; BOOL guest; /* following groups stuff added by ih */ diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c index 2a575f0c38..a23f613814 100644 --- a/source3/lib/substitute.c +++ b/source3/lib/substitute.c @@ -280,7 +280,7 @@ void standard_sub_snum(int snum, char *str) ********************************************************************/ void standard_sub_vuser(char *str, user_struct *vuser) { - standard_sub_advanced(-1, vuser->name, "", -1, str); + standard_sub_advanced(-1, vuser->user.unix_name, "", -1, str); } /******************************************************************* @@ -288,6 +288,6 @@ void standard_sub_vuser(char *str, user_struct *vuser) ********************************************************************/ void standard_sub_vsnum(char *str, user_struct *vuser, int snum) { - standard_sub_advanced(snum, vuser->name, "", -1, str); + standard_sub_advanced(snum, vuser->user.unix_name, "", -1, str); } diff --git a/source3/locking/posix.c b/source3/locking/posix.c index 094cb87bc8..ab58607172 100644 --- a/source3/locking/posix.c +++ b/source3/locking/posix.c @@ -611,10 +611,10 @@ static BOOL posix_lock_in_range(SMB_OFF_T *offset_out, SMB_OFF_T *count_out, return True; } +#if defined(LARGE_SMB_OFF_T) /**************************************************************************** Pathetically try and map a 64 bit lock offset into 31 bits. I hate Windows :-). ****************************************************************************/ - static uint32 map_lock_offset(uint32 high, uint32 low) { unsigned int i; @@ -642,6 +642,7 @@ static uint32 map_lock_offset(uint32 high, uint32 low) return (high|low); } +#endif /**************************************************************************** Actual function that does POSIX locks. Copes with 64 -> 32 bit cruft and diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index ff19f34a0e..1294eda45c 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -995,7 +995,7 @@ static void init_globals(void) Globals.shmem_size = SHMEM_SIZE; Globals.stat_cache_size = 50; /* Number of stat translations we'll keep */ Globals.announce_as = ANNOUNCE_AS_NT_SERVER; - Globals.bUnixRealname = False; + Globals.bUnixRealname = True; #if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT)) Globals.bNISHomeMap = False; #ifdef WITH_NISPLUS_HOME diff --git a/source3/rpc_server/srv_netlog.c b/source3/rpc_server/srv_netlog.c index a198b6b98a..82573f7952 100644 --- a/source3/rpc_server/srv_netlog.c +++ b/source3/rpc_server/srv_netlog.c @@ -808,7 +808,7 @@ static BOOL api_net_sam_logon(prs_struct *data, prs_struct *rdata) &dummy_time, /* pass_must_change_time */ nt_username , /* user_name */ - vuser->real_name, /* full_name */ + vuser->user.real_name, /* full_name */ logon_script , /* logon_script */ profile_path , /* profile_path */ home_dir , /* home_dir */ diff --git a/source3/rpc_server/srv_pipe_hnd.c b/source3/rpc_server/srv_pipe_hnd.c index 7110342383..35fb0423a5 100644 --- a/source3/rpc_server/srv_pipe_hnd.c +++ b/source3/rpc_server/srv_pipe_hnd.c @@ -120,8 +120,8 @@ static void attempt_remote_rpc_connect(pipes_struct *p) ZERO_STRUCT(usr); /* set up unix credentials from the smb side, to feed over the pipe */ - make_creds_unix(&usr.uxc, vuser->name, vuser->requested_name, - vuser->real_name, vuser->guest); + make_creds_unix(&usr.uxc, vuser->user.unix_name, vuser->user.smb_name, + vuser->user.real_name, vuser->guest); usr.ptr_uxc = 1; make_creds_unix_sec(&usr.uxs, vuser->uid, vuser->gid, vuser->n_groups, vuser->groups); diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c index 9774305fc9..2ec08ddbf9 100644 --- a/source3/smbd/lanman.c +++ b/source3/smbd/lanman.c @@ -2285,7 +2285,8 @@ static BOOL api_RNetUserGetInfo(connection_struct *conn,uint16 vuid, char *param 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->name)); + DEBUG(3,(" Username of UID %d is %s\n", (int)vuser->uid, + vuser->user.unix_name)); *rparam_len = 6; *rparam = REALLOC(*rparam,*rparam_len); @@ -2335,7 +2336,7 @@ static BOOL api_RNetUserGetInfo(connection_struct *conn,uint16 vuid, char *param /* EEK! the cifsrap.txt doesn't have this in!!!! */ SIVAL(p,usri11_full_name,PTR_DIFF(p2,p)); /* full name */ - pstrcpy(p2,((vuser != NULL) ? vuser->real_name : UserName)); + pstrcpy(p2,((vuser != NULL) ? vuser->user.real_name : UserName)); p2 = skip_string(p2,1); } @@ -2394,7 +2395,7 @@ static BOOL api_RNetUserGetInfo(connection_struct *conn,uint16 vuid, char *param { SIVAL(p,60,0); /* auth_flags */ SIVAL(p,64,PTR_DIFF(p2,*rdata)); /* full_name */ - pstrcpy(p2,((vuser != NULL) ? vuser->real_name : UserName)); + pstrcpy(p2,((vuser != NULL) ? vuser->user.real_name : UserName)); p2 = skip_string(p2,1); SIVAL(p,68,0); /* urs_comment */ SIVAL(p,72,PTR_DIFF(p2,*rdata)); /* parms */ diff --git a/source3/smbd/password.c b/source3/smbd/password.c index a8b9050030..cff47c0a94 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -140,7 +140,7 @@ char *validated_username(uint16 vuid) user_struct *vuser = get_valid_user_struct(vuid); if (vuser == NULL) return 0; - return(vuser->name); + return(vuser->user.unix_name); } @@ -246,8 +246,8 @@ uint16 register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, vuser->uid = uid; vuser->gid = gid; vuser->guest = guest; - fstrcpy(vuser->name,unix_name); - fstrcpy(vuser->requested_name,requested_name); + fstrcpy(vuser->user.unix_name,unix_name); + fstrcpy(vuser->user.smb_name,requested_name); vuser->n_groups = 0; vuser->groups = NULL; @@ -261,12 +261,12 @@ uint16 register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, DEBUG(3,("uid %d registered to name %s\n",(int)uid,unix_name)); DEBUG(3, ("Clearing default real name\n")); - fstrcpy(vuser->real_name, "<Full Name>\0"); + fstrcpy(vuser->user.real_name, "<Full Name>"); if (lp_unix_realname()) { - if ((pwfile=sys_getpwnam(vuser->name))!= NULL) + if ((pwfile=sys_getpwnam(vuser->user.unix_name))!= NULL) { - DEBUG(3, ("User name: %s\tReal name: %s\n",vuser->name,pwfile->pw_gecos)); - fstrcpy(vuser->real_name, pwfile->pw_gecos); + DEBUG(3, ("User name: %s\tReal name: %s\n",vuser->user.unix_name,pwfile->pw_gecos)); + fstrcpy(vuser->user.real_name, pwfile->pw_gecos); } } @@ -707,9 +707,9 @@ BOOL authorise_login(int snum,char *user,char *password, int pwlen, /* check for a previously registered guest username */ if (!ok && (vuser != 0) && vuser->guest) { - if (user_ok(vuser->name,snum) && - password_ok(vuser->name, password, pwlen, NULL)) { - fstrcpy(user, vuser->name); + if (user_ok(vuser->user.unix_name,snum) && + password_ok(vuser->user.unix_name, password, pwlen, NULL)) { + fstrcpy(user, vuser->user.unix_name); vuser->guest = False; DEBUG(3,("ACCEPTED: given password with registered user %s\n", user)); ok = True; @@ -744,8 +744,8 @@ BOOL authorise_login(int snum,char *user,char *password, int pwlen, /* check for a previously validated username/password pair */ if (!ok && (!lp_revalidate(snum) || lp_security() > SEC_SHARE) && (vuser != 0) && !vuser->guest && - user_ok(vuser->name,snum)) { - fstrcpy(user,vuser->name); + user_ok(vuser->user.unix_name,snum)) { + fstrcpy(user,vuser->user.unix_name); *guest = False; DEBUG(3,("ACCEPTED: validated uid ok as non-guest\n")); ok = True; diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 1eb5899667..6482ccd538 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -495,7 +495,7 @@ static int switch_message(int type,char *inbuf,char *outbuf,int size,int bufsize if(session_tag != UID_FIELD_INVALID) vuser = get_valid_user_struct(session_tag); if(vuser != NULL) - pstrcpy( sesssetup_user, vuser->requested_name); + pstrcpy( sesssetup_user, vuser->user.smb_name); } /* does this protocol need to be run as root? */ diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c index ce0631e418..28d2fb71f6 100644 --- a/source3/smbd/uid.c +++ b/source3/smbd/uid.c @@ -140,7 +140,7 @@ static BOOL check_user_ok(connection_struct *conn, user_struct *vuser,int snum) for (i=0;i<conn->uid_cache.entries;i++) if (conn->uid_cache.list[i] == vuser->uid) return(True); - if (!user_ok(vuser->name,snum)) return(False); + if (!user_ok(vuser->user.unix_name,snum)) return(False); i = conn->uid_cache.entries % UID_CACHE_SIZE; conn->uid_cache.list[i] = vuser->uid; |