This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Fix leak in gataddrinfo when /etc/nsswitch.conf is absent
- From: Vinitha Thejes Kuttian <jiji dot vinitha at gmail dot com>
- To: Ondřej Bílka <neleai at seznam dot cz>
- Cc: Allan McRae <allan at archlinux dot org>, libc-alpha at sourceware dot org
- Date: Tue, 24 Sep 2013 13:21:47 +0530
- Subject: Re: [PATCH] Fix leak in gataddrinfo when /etc/nsswitch.conf is absent
- Authentication-results: sourceware.org; auth=none
- References: <1378787642-6389-1-git-send-email-allan at archlinux dot org> <20130923182810 dot GA11240 at domone dot podge>
Hi,
Sorry for no follow up.
Found that Andreas has proposed similar patch related to this bug - BZ #15048
http://sourceware.org/ml/libc-alpha/2013-01/msg00886.html.
Any comments ?
Regards,
Vinitha
On Mon, Sep 23, 2013 at 11:58 PM, OndÅej BÃlka <neleai@seznam.cz> wrote:
>
> Adding Vinitha to cc.
>
> On Tue, Sep 10, 2013 at 02:34:02PM +1000, Allan McRae wrote:
>> From: Vinitha Vijayan <jiji.vinitha@gmail.com>
>>
>> ---
>>
>> Patch submitted to the bug tracker without follow-up. Siddhesh gave it an
>> OK on the bug tracker. I believe this is too small to require a contributor
>> agreement.
>>
>> OK to apply?
>>
> That patch looks ok, but as nip is in both branches it could be
> equivalently written as below.
>
>> 2013-09-10 Vinitha Vijayan <jiji.vinitha@gmail.com>
>>
>> [BZ #15048]
>> * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix memory leak.
>>
>>
>> sysdeps/posix/getaddrinfo.c | 9 ++++++---
>> 1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
>> index c0ded84..c9a97d4 100644
>> --- a/sysdeps/posix/getaddrinfo.c
>> +++ b/sysdeps/posix/getaddrinfo.c
>> @@ -797,9 +797,12 @@ gaih_inet (const char *name, const struct gaih_service *service,
>> nip = __nss_hosts_database;
>
>> }
>> else
>> - no_more = __nss_database_lookup ("hosts", NULL,
>> - "dns [!UNAVAIL=return] files",
>> - &nip);
>> + {
>> + no_more = __nss_database_lookup ("hosts", NULL,
>> + "dns [!UNAVAIL=return] files",
>> + &__nss_hosts_database);
>> + nip = __nss_hosts_database;
>> + }
>>
>> /* Initialize configurations. */
>> if (__glibc_unlikely (!_res_hconf.initialized))
>> --
>> 1.8.4
>
> diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
> index 52177e4..5c80098 100644
> --- a/sysdeps/posix/getaddrinfo.c
> +++ b/sysdeps/posix/getaddrinfo.c
> @@ -792,14 +792,12 @@ gaih_inet (const char *name, const struct gaih_service *service,
> #endif
>
> if (__nss_hosts_database != NULL)
> - {
> - no_more = 0;
> - nip = __nss_hosts_database;
> - }
> + no_more = 0;
> else
> no_more = __nss_database_lookup ("hosts", NULL,
> "dns [!UNAVAIL=return] files",
> - &nip);
> + &__nss_hosts_database);
> + nip = __nss_hosts_database;
>
> /* Initialize configurations. */
> if (__glibc_unlikely (!_res_hconf.initialized))