mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00: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:
parent
7000d82e01
commit
d62aa75af1
@ -1,5 +1,10 @@
|
||||
2014-07-10 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
[BZ #17125]
|
||||
* sysdeps/unix/sysv/linux/check_pf.c (cache): Don't use
|
||||
libc_freeres_ptr.
|
||||
(freecache): New function to free CACHE on exit.
|
||||
|
||||
* sunrpc/xdr.c (xdr_string): Add comment about SIZE
|
||||
initialization.
|
||||
|
||||
|
2
NEWS
2
NEWS
@ -21,7 +21,7 @@ Version 2.20
|
||||
16882, 16885, 16888, 16890, 16912, 16915, 16916, 16917, 16918, 16922,
|
||||
16927, 16928, 16932, 16943, 16958, 16965, 16966, 16967, 16977, 16978,
|
||||
16984, 16990, 16996, 17009, 17022, 17031, 17042, 17048, 17050, 17058,
|
||||
17061, 17062, 17069, 17075, 17079, 17084, 17086, 17092, 17097.
|
||||
17061, 17062, 17069, 17075, 17079, 17084, 17086, 17092, 17097, 17125.
|
||||
|
||||
* Optimized strchr implementation for AArch64. Contributed by ARM Ltd.
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user