The following reply was made to PR bin/169471; it has been noted by GNATS.

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: bin/169471: commit references a PR
Date: Thu, 13 Mar 2014 18:16:50 +0000 (UTC)
 Author: dteske
 Date: Thu Mar 13 18:16:42 2014
 New Revision: 263114
 URL: http://svnweb.freebsd.org/changeset/base/263114
 
 Log:
   Fix pw(8) deletion of group "username" on userdel even if group "username"
   is not associated with user "username". E.g., user "foo" has primary group
   "wheel" and is unassociated with group "foo", yet userdel would delete the
   group "foo" when deleting user "foo" (despite the fact that user "foo" is
   not associated with group "foo" in any way).
   
   Patch committed with minor style(9) changes.
   
   PR:          bin/169471
   Submitted by:        Alexander Pyhalov <apyha...@gmail.com>
 
 Modified:
   head/usr.sbin/pw/pw_user.c
 
 Modified: head/usr.sbin/pw/pw_user.c
 ==============================================================================
 --- head/usr.sbin/pw/pw_user.c Thu Mar 13 18:11:42 2014        (r263113)
 +++ head/usr.sbin/pw/pw_user.c Thu Mar 13 18:16:42 2014        (r263114)
 @@ -380,6 +380,8 @@ pw_user(struct userconf * cnf, int mode,
                        char            file[MAXPATHLEN];
                        char            home[MAXPATHLEN];
                        uid_t           uid = pwd->pw_uid;
 +                      struct group    *gr;
 +                      char            grname[LOGNAMESIZE];
  
                        if (strcmp(pwd->pw_name, "root") == 0)
                                errx(EX_DATAERR, "cannot remove user 'root'");
 @@ -406,6 +408,11 @@ pw_user(struct userconf * cnf, int mode,
                         */
                        sprintf(file, "%s/%s", _PATH_MAILDIR, pwd->pw_name);
                        strlcpy(home, pwd->pw_dir, sizeof(home));
 +                      gr = GETGRGID(pwd->pw_gid);
 +                      if (gr != NULL)
 +                              strlcpy(grname, gr->gr_name, LOGNAMESIZE);
 +                      else
 +                              grname[0] = '\0';
  
                        rc = delpwent(pwd);
                        if (rc == -1)
 @@ -426,7 +433,8 @@ pw_user(struct userconf * cnf, int mode,
  
                        grp = GETGRNAM(a_name->val);
                        if (grp != NULL &&
 -                          (grp->gr_mem == NULL || *grp->gr_mem == NULL))
 +                          (grp->gr_mem == NULL || *grp->gr_mem == NULL) &&
 +                          strcmp(a_name->val, grname) == 0)
                                delgrent(GETGRNAM(a_name->val));
                        SETGRENT();
                        while ((grp = GETGRENT()) != NULL) {
 _______________________________________________
 svn-src-...@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
 
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to