]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
One less getpwnam() call...
authorAndrew Bartlett <abartlet@samba.org>
Fri, 17 Aug 2001 05:38:44 +0000 (05:38 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 17 Aug 2001 05:38:44 +0000 (05:38 +0000)
Andrew Bartlett

source/smbd/password.c
source/smbd/reply.c

index 4aa5a0211ebc753cc90a5f3da5d58e6b6048f26c..b4d22a3850067f79167859f8cf1ab4b15072a533 100644 (file)
@@ -203,10 +203,9 @@ tell random client vuid's (normally zero) from valid vuids.
 ****************************************************************************/
 
 int register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, 
-                 char *domain,BOOL guest)
+                 char *domain,BOOL guest, char* full_name)
 {
        user_struct *vuser = NULL;
-       struct passwd *pwfile; /* for getting real name from passwd file */
 
        /* Ensure no vuid gets registered in share level security. */
        if(lp_security() == SEC_SHARE)
@@ -243,6 +242,8 @@ int register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name,
        fstrcpy(vuser->user.unix_name,unix_name);
        fstrcpy(vuser->user.smb_name,requested_name);
        fstrcpy(vuser->user.domain,domain);
+       fstrcpy(vuser->user.full_name, full_name);
+       DEBUG(3, ("User name: %s\tReal name: %s\n",vuser->user.unix_name,vuser->user.full_name));       
 
        vuser->n_groups = 0;
        vuser->groups  = NULL;
@@ -260,14 +261,6 @@ int register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name,
 
        DLIST_ADD(validated_users, vuser);
 
-       DEBUG(3,("uid %d registered to name %s\n",(int)uid,unix_name));
-
-       DEBUG(3, ("Clearing default real name\n"));
-       if ((pwfile=sys_getpwnam(vuser->user.unix_name))!= NULL) {
-               DEBUG(3, ("User name: %s\tReal name: %s\n",vuser->user.unix_name,pwfile->pw_gecos));
-               fstrcpy(vuser->user.full_name, pwfile->pw_gecos);
-       }
-
        if (!session_claim(vuser->vuid)) {
                DEBUG(1,("Failed to claim session for vuid=%d\n", vuser->vuid));
                invalidate_vuid(vuser->vuid);
index 3ba1d4eea94139e19b514440ad52ade2c22cbe57..47a363ae8d112ba1c13fac6184cfd0f4c5753f7f 100644 (file)
@@ -567,6 +567,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
   int sess_vuid;
   gid_t gid;
   uid_t uid;
+  char* full_name;
   int   smb_bufsize;    
   int   smb_apasslen = 0;   
   pstring smb_apasswd;
@@ -879,6 +880,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
     }
     gid = pw->pw_gid;
     uid = pw->pw_uid;
+    full_name = pw->pw_gecos;
   }
 
   if (guest)
@@ -887,7 +889,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
   /* register the name and uid as being validated, so further connections
      to a uid can get through without a password, on the same VC */
 
-  sess_vuid = register_vuid(uid,gid,user,current_user_info.smb_name,domain,guest);
+  sess_vuid = register_vuid(uid,gid,user,current_user_info.smb_name,domain,guest, full_name);
   
   if (sess_vuid == -1) {
          return(ERROR(ERRDOS,ERRnoaccess));