pullup from BIND 8.

1214.   [bug]           getrgnam()/getgrgid() leaked memory.
This commit is contained in:
Mark Andrews
2001-05-25 03:32:40 +00:00
parent 4fbd6a13a5
commit ba10e25d1c
2 changed files with 11 additions and 5 deletions

View File

@@ -16,7 +16,7 @@
*/
#if !defined(LINT) && !defined(CODECENTER)
static const char rcsid[] = "$Id: gen_gr.c,v 1.1 2001/03/29 06:31:43 marka Exp $";
static const char rcsid[] = "$Id: gen_gr.c,v 1.2 2001/05/25 03:32:40 marka Exp $";
#endif
/* Imports */
@@ -372,15 +372,18 @@ grmerge(struct irs_gr *this, const struct group *src, int preserve) {
/* No work to do. */
return;
}
cp = realloc(pvt->membuf, pvt->membufsize + n);
cp = realloc(pvt->membuf, (preserve ? pvt->membufsize : 0) + n);
if (!cp) {
/* No harm done, no work done. */
return;
}
memadj = cp - pvt->membuf;
pvt->membuf = cp;
cp += pvt->membufsize;
pvt->membufsize += n;
if (preserve) {
cp += pvt->membufsize;
pvt->membufsize += n;
} else
pvt->membufsize = n;
/*
* Add new elements.

View File

@@ -16,7 +16,7 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
static const char rcsid[] = "$Id: irp_gr.c,v 1.1 2001/03/29 06:31:48 marka Exp $";
static const char rcsid[] = "$Id: irp_gr.c,v 1.2 2001/05/25 03:32:38 marka Exp $";
#endif /* LIBC_SCCS and not lint */
/* extern */
@@ -397,6 +397,9 @@ free_group(struct group *gr) {
for (p = gr->gr_mem ; p != NULL && *p != NULL ; p++)
free(*p);
if (gr->gr_mem)
free(gr->gr_mem);
if (p != NULL)
free(p);
}