summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libc/gen/getnetgrent.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/libc/gen/getnetgrent.c b/lib/libc/gen/getnetgrent.c
index 933a7d3..f9dfd7b 100644
--- a/lib/libc/gen/getnetgrent.c
+++ b/lib/libc/gen/getnetgrent.c
@@ -538,7 +538,7 @@ parse_netgrp(const char *group)
static struct linelist *
read_for_group(const char *group)
{
- char *pos, *spos, *linep;
+ char *linep, *olinep, *pos, *spos;
int len, olen;
int cont;
struct linelist *lp;
@@ -615,15 +615,20 @@ read_for_group(const char *group)
} else
cont = 0;
if (len > 0) {
- linep = reallocf(linep, olen + len + 1);
+ linep = malloc(olen + len + 1);
if (linep == NULL) {
free(lp->l_groupname);
free(lp);
return (NULL);
}
+ if (olen > 0) {
+ bcopy(olinep, linep, olen);
+ free(olinep);
+ }
bcopy(pos, linep + olen, len);
olen += len;
*(linep + olen) = '\0';
+ olinep = linep;
}
if (cont) {
if (fgets(line, LINSIZ, netf)) {
OpenPOWER on IntegriCloud