mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Clear up another clangalyzer issue
"The NULL pointer warnings on the return value of tor_addr_to_in6_addr32() are incorrect. But clang can't work this out itself due to limited analysis depth. To teach the analyser that the return value is safe to dereference, I applied tor_assert to the return value." Patch from teor. Part of 13157.
This commit is contained in:
parent
d6b2a1709d
commit
53a94c4b4b
@ -332,8 +332,15 @@ tor_addr_is_internal_(const tor_addr_t *addr, int for_listening,
|
||||
iph4 = tor_addr_to_ipv4h(addr);
|
||||
} else if (v_family == AF_INET6) {
|
||||
if (tor_addr_is_v4(addr)) { /* v4-mapped */
|
||||
uint32_t *addr32 = NULL;
|
||||
v_family = AF_INET;
|
||||
iph4 = ntohl(tor_addr_to_in6_addr32(addr)[3]);
|
||||
// Work around an incorrect NULL pointer dereference warning in
|
||||
// "clang --analyze" due to limited analysis depth
|
||||
addr32 = tor_addr_to_in6_addr32(addr);
|
||||
// To improve performance, wrap this assertion in:
|
||||
// #if !defined(__clang_analyzer__) || PARANOIA
|
||||
tor_assert(addr32);
|
||||
iph4 = ntohl(addr32[3]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,18 @@ tor_addr_to_ipv4h(const tor_addr_t *a)
|
||||
static INLINE uint32_t
|
||||
tor_addr_to_mapped_ipv4h(const tor_addr_t *a)
|
||||
{
|
||||
return a->family == AF_INET6 ? ntohl(tor_addr_to_in6_addr32(a)[3]) : 0;
|
||||
if (a->family == AF_INET6) {
|
||||
uint32_t *addr32 = NULL;
|
||||
// Work around an incorrect NULL pointer dereference warning in
|
||||
// "clang --analyze" due to limited analysis depth
|
||||
addr32 = tor_addr_to_in6_addr32(a);
|
||||
// To improve performance, wrap this assertion in:
|
||||
// #if !defined(__clang_analyzer__) || PARANOIA
|
||||
tor_assert(addr32);
|
||||
return ntohl(addr32[3]);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/** Return the address family of <b>a</b>. Possible values are:
|
||||
* AF_INET6, AF_INET, AF_UNSPEC. */
|
||||
|
@ -2910,6 +2910,9 @@ test_util_spawn_background_fail(void *ptr)
|
||||
const int expected_status = PROCESS_STATUS_RUNNING;
|
||||
#endif
|
||||
|
||||
memset(expected_out, 0xf0, sizeof(expected_out));
|
||||
memset(code, 0xf0, sizeof(code));
|
||||
|
||||
(void)ptr;
|
||||
|
||||
tor_snprintf(code, sizeof(code), "%x/%x",
|
||||
|
Loading…
Reference in New Issue
Block a user