libutil: utilize strsep instead of strcat in a loop in gr_make
Submitted by: Christoph Mallon <christoph.mallon gmx.de>
This commit is contained in:
parent
fe75b0f0e5
commit
49013fb476
@ -390,7 +390,9 @@ char *
|
||||
gr_make(const struct group *gr)
|
||||
{
|
||||
const char *group_line_format = "%s:%s:%ju:";
|
||||
const char *sep;
|
||||
char *line;
|
||||
char *p;
|
||||
size_t line_size;
|
||||
int ndx;
|
||||
|
||||
@ -405,16 +407,18 @@ gr_make(const struct group *gr)
|
||||
}
|
||||
|
||||
/* Create the group line and fill it. */
|
||||
if ((line = malloc(line_size)) == NULL)
|
||||
if ((line = p = malloc(line_size)) == NULL)
|
||||
return (NULL);
|
||||
snprintf(line, line_size, group_line_format, gr->gr_name, gr->gr_passwd,
|
||||
p += sprintf(p, group_line_format, gr->gr_name, gr->gr_passwd,
|
||||
(uintmax_t)gr->gr_gid);
|
||||
if (gr->gr_mem != NULL)
|
||||
if (gr->gr_mem != NULL) {
|
||||
sep = "";
|
||||
for (ndx = 0; gr->gr_mem[ndx] != NULL; ndx++) {
|
||||
strcat(line, gr->gr_mem[ndx]);
|
||||
if (gr->gr_mem[ndx + 1] != NULL)
|
||||
strcat(line, ",");
|
||||
p = stpcpy(p, sep);
|
||||
p = stpcpy(p, gr->gr_mem[ndx]);
|
||||
sep = ",";
|
||||
}
|
||||
}
|
||||
|
||||
return (line);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user