1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Fix crash when system has no ipv6 address [BZ #17125]

Here's an updated patch to fix the crash in bug-ga2 when the system
has no configured ipv6 address.  I have taken a different approach of
using libc_freeres_fn instead of the libc_freeres_ptr since the former
gives better control over what is freed; we need that since cache may
or may not be allocated using malloc.

Verified that bug-ga2 works correctly in both cases and does not have
memory leaks in either of them.
This commit is contained in:
Siddhesh Poyarekar
2014-07-10 14:15:16 +05:30
parent 7000d82e01
commit d62aa75af1
3 changed files with 13 additions and 2 deletions

View File

@ -61,7 +61,7 @@ static struct cached_data noai6ai_cached =
.in6ailen = 0
};
libc_freeres_ptr (static struct cached_data *cache);
static struct cached_data *cache;
__libc_lock_define_initialized (static, lock);
@ -401,6 +401,12 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
*seen_ipv6 = true;
}
/* Free the cache if it has been allocated. */
libc_freeres_fn (freecache)
{
if (cache)
__free_in6ai (cache->in6ai);
}
void
__free_in6ai (struct in6addrinfo *ai)