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:
@ -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)
|
||||
|
Reference in New Issue
Block a user