fix buffer overrun in getgrent code when there are no group members
authorRich Felker <dalias@aerifal.cx>
Thu, 30 Jun 2011 12:11:06 +0000 (08:11 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 30 Jun 2011 12:11:06 +0000 (08:11 -0400)
src/passwd/getgrent_a.c

index ccb51d5..7c63c57 100644 (file)
@@ -37,10 +37,14 @@ struct group *__getgrent_a(FILE *f, struct group *gr, char **line, size_t *size,
                *line = 0;
                return 0;
        }
-       mem[0][0] = mems;
-       for (s=mems, i=0; *s; s++)
-               if (*s==',') *s++ = 0, mem[0][++i] = s;
-       mem[0][++i] = 0;
+       if (*mems) {
+               mem[0][0] = mems;
+               for (s=mems, i=0; *s; s++)
+                       if (*s==',') *s++ = 0, mem[0][++i] = s;
+               mem[0][++i] = 0;
+       } else {
+               mem[0][0] = 0;
+       }
        gr->gr_mem = *mem;
        return gr;
 }