Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Apr 2012 13:48:52 -0400
From:      Andrew Boyer <aboyer@averesystems.com>
To:        Dimitry Andric <dim@FreeBSD.org>
Cc:        Current FreeBSD <freebsd-current@freebsd.org>, Greg Bednarek <gbednarek@averesystems.com>
Subject:   Re: Memory leak in authunix_create_default()...
Message-ID:  <D0291F2C-1864-44DC-87EA-591A6D9B4501@averesystems.com>
In-Reply-To: <4F9594EA.3050108@FreeBSD.org>
References:  <3C479FEC-971A-4099-9CA5-B522574BE763@averesystems.com> <A36F8327-BD58-4904-99C7-FEB893FE3561@averesystems.com> <4F9594EA.3050108@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail-7-413847496
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


On Apr 23, 2012, at 1:44 PM, Dimitry Andric wrote:

> On 2012-04-23 19:31, Andrew Boyer wrote:
>> Begin forwarded message:
>>=20
>>> From: Greg Bednarek <gbednarek@averesystems.com>
>>> Date: April 16, 2012 10:54:33 AM EDT
>>> To: freebsd-current@freebsd.org
>>> Cc: Andrew Boyer <aboyer@averesystems.com>
>>> Subject: Memory leak in authunix_create_default()...
>>>=20
>>>=20
>>> Please see the attached patch for a proposed fix for a memory leak =
in authunix_create_default().
>>>=20
>>> The leak appears to have been introduced 6/19/2009 in Revision =
194494 of lib/libc/rpc/auth_unix.c
>>>=20
>>> As you can see form the patch, the fix is very simple. The issue was =
discovered when tracking down some rather drastic increases in =
application memory footprint during certain types of workloads, and was =
eventually traced it to this (apparently) not very heavily used path in =
libc.
>>>=20
>>> I would appreciate hearing any comments/concerns with the proposed =
fix.
>=20
> Hi,
>=20
> The patch itself seems to have gone missing?


Trying again...


--Apple-Mail-7-413847496
Content-Disposition: attachment;
	filename=auth_unix.diff
Content-Type: application/octet-stream;
	name="auth_unix.diff"
Content-Transfer-Encoding: 7bit

Index: lib/libc/rpc/auth_unix.c
===================================================================
--- lib/libc/rpc/auth_unix.c	(revision 234224)
+++ lib/libc/rpc/auth_unix.c	(working copy)
@@ -185,6 +185,7 @@
 AUTH *
 authunix_create_default()
 {
+	AUTH *auth;
 	int ngids;
 	long ngids_max;
 	char machname[MAXHOSTNAMELEN + 1];
@@ -207,8 +208,10 @@
 	if (ngids > NGRPS)
 		ngids = NGRPS;
 	/* XXX: interface problem; those should all have been unsigned */
-	return (authunix_create(machname, (int)uid, (int)gid, ngids,
-	    (int *)gids));
+	auth = authunix_create(machname, (int)uid, (int)gid, ngids,
+	    (int *)gids);
+	free(gids);
+	return (auth);
 }
 
 /*

--Apple-Mail-7-413847496
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=us-ascii



Index: lib/libc/rpc/auth_unix.c
===================================================================
--- lib/libc/rpc/auth_unix.c	(revision 234224)
+++ lib/libc/rpc/auth_unix.c	(working copy)
@@ -185,6 +185,7 @@
 AUTH *
 authunix_create_default()
 {
+	AUTH *auth;
 	int ngids;
 	long ngids_max;
 	char machname[MAXHOSTNAMELEN + 1];
@@ -207,8 +208,10 @@
 	if (ngids > NGRPS)
 		ngids = NGRPS;
 	/* XXX: interface problem; those should all have been unsigned */
-	return (authunix_create(machname, (int)uid, (int)gid, ngids,
-	    (int *)gids));
+	auth = authunix_create(machname, (int)uid, (int)gid, ngids,
+	    (int *)gids);
+	free(gids);
+	return (auth);
 }
 
 /*



--------------------------------------------------
Andrew Boyer	aboyer@averesystems.com





--Apple-Mail-7-413847496--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D0291F2C-1864-44DC-87EA-591A6D9B4501>