Author: ghelmer
Date: Thu Jan  5 23:08:11 2012
New Revision: 229668
URL: http://svn.freebsd.org/changeset/base/229668

Log:
  Fix a memory leak in addgroup() by ensuring the allocated memory
  is freed if an error occurs.
  
  PR:           bin/161510
  MFC after:    4 weeks

Modified:
  head/usr.bin/newgrp/newgrp.c

Modified: head/usr.bin/newgrp/newgrp.c
==============================================================================
--- head/usr.bin/newgrp/newgrp.c        Thu Jan  5 22:48:36 2012        
(r229667)
+++ head/usr.bin/newgrp/newgrp.c        Thu Jan  5 23:08:11 2012        
(r229668)
@@ -190,7 +190,7 @@ addgroup(const char *grpname)
                err(1, "malloc");
        if ((ngrps = getgroups(ngrps_max, (gid_t *)grps)) < 0) {
                warn("getgroups");
-               return;
+               goto end;
        }
 
        /* Remove requested gid from supp. list if it exists. */
@@ -204,7 +204,7 @@ addgroup(const char *grpname)
                if (setgroups(ngrps, (const gid_t *)grps) < 0) {
                        PRIV_END;
                        warn("setgroups");
-                       return;
+                       goto end;
                }
                PRIV_END;
        }
@@ -213,7 +213,7 @@ addgroup(const char *grpname)
        if (setgid(grp->gr_gid)) {
                PRIV_END;
                warn("setgid");
-               return;
+               goto end;
        }
        PRIV_END;
        grps[0] = grp->gr_gid;
@@ -228,12 +228,12 @@ addgroup(const char *grpname)
                        if (setgroups(ngrps, (const gid_t *)grps)) {
                                PRIV_END;
                                warn("setgroups");
-                               return;
+                               goto end;
                        }
                        PRIV_END;
                }
        }
-
+end:
        free(grps);
 }
 
_______________________________________________
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