[BACK]Return to uidswap.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/uidswap.c between version 1.39 and 1.40

version 1.39, 2015/06/24 01:49:19 version 1.40, 2018/06/15 07:01:11
Line 38 
Line 38 
 /* Saved effective uid. */  /* Saved effective uid. */
 static int      privileged = 0;  static int      privileged = 0;
 static int      temporarily_use_uid_effective = 0;  static int      temporarily_use_uid_effective = 0;
 static uid_t    saved_euid = 0;  static uid_t    saved_euid, user_groups_uid;
 static gid_t    saved_egid;  static gid_t    saved_egid;
 static gid_t    saved_egroups[NGROUPS_MAX], user_groups[NGROUPS_MAX];  static gid_t    saved_egroups[NGROUPS_MAX], user_groups[NGROUPS_MAX];
 static int      saved_egroupslen = -1, user_groupslen = -1;  static int      saved_egroupslen = -1, user_groupslen = -1;
Line 67 
Line 67 
                 fatal("getgroups: %.100s", strerror(errno));                  fatal("getgroups: %.100s", strerror(errno));
   
         /* set and save the user's groups */          /* set and save the user's groups */
         if (user_groupslen == -1) {          if (user_groupslen == -1 || user_groups_uid != pw->pw_uid) {
                 if (initgroups(pw->pw_name, pw->pw_gid) < 0)                  if (initgroups(pw->pw_name, pw->pw_gid) < 0)
                         fatal("initgroups: %s: %.100s", pw->pw_name,                          fatal("initgroups: %s: %.100s", pw->pw_name,
                             strerror(errno));                              strerror(errno));
                 user_groupslen = getgroups(NGROUPS_MAX, user_groups);                  user_groupslen = getgroups(NGROUPS_MAX, user_groups);
                 if (user_groupslen < 0)                  if (user_groupslen < 0)
                         fatal("getgroups: %.100s", strerror(errno));                          fatal("getgroups: %.100s", strerror(errno));
                   user_groups_uid = pw->pw_uid;
         }          }
         /* Set the effective uid to the given (unprivileged) uid. */          /* Set the effective uid to the given (unprivileged) uid. */
         if (setgroups(user_groupslen, user_groups) < 0)          if (setgroups(user_groupslen, user_groups) < 0)

Legend:
Removed from v.1.39  
changed lines
  Added in v.1.40