Author: bapt
Date: Wed Dec 26 18:14:45 2012
New Revision: 244710
URL: http://svnweb.freebsd.org/changeset/base/244710

Log:
  Fix creating a user and adding it to a group
  
  Reported by:  "Sam Fourman Jr." <sfour...@gmail.com>, dim

Modified:
  head/usr.sbin/pw/pw_user.c

Modified: head/usr.sbin/pw/pw_user.c
==============================================================================
--- head/usr.sbin/pw/pw_user.c  Wed Dec 26 17:58:22 2012        (r244709)
+++ head/usr.sbin/pw/pw_user.c  Wed Dec 26 18:14:45 2012        (r244710)
@@ -747,6 +747,7 @@ pw_user(struct userconf * cnf, int mode,
        if (mode == M_ADD || getarg(args, 'G') != NULL) {
                int i, j;
                for (i = 0; cnf->groups[i] != NULL; i++) {
+                       char **members;
                        grp = GETGRNAM(cnf->groups[i]);
                        for (j = 0; grp->gr_mem[j] != NULL; j++) {
                                if (!strcmp(grp->gr_mem[j], pwd->pw_name))
@@ -755,15 +756,15 @@ pw_user(struct userconf * cnf, int mode,
                        if (grp->gr_mem[j] != NULL) /* user already member of 
group */
                                continue;
 
-                       if (j == 0)
-                               grp->gr_mem = NULL;
-
-                       grp->gr_mem = reallocf(grp->gr_mem, 
sizeof(*grp->gr_mem) *
-                                                           (j + 2));
-
-                       grp->gr_mem[j] = pwd->pw_name;
-                       grp->gr_mem[j+1] = NULL;
+                       members = malloc(sizeof(char *) * (j + 1));
+                       for (j = 0; grp->gr_mem[j] != NULL; j++)
+                               members[j] = grp->gr_mem[j];
+
+                       members[j] = pwd->pw_name;
+                       members[j+1] = NULL;
+                       grp->gr_mem = members;
                        chggrent(cnf->groups[i], grp);
+                       free(members);
                }
        }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to