diff options
author | Nick Mathewson <nickm@torproject.org> | 2014-09-15 13:52:13 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2014-09-15 13:52:13 -0400 |
commit | 53a94c4b4bf2e75ec4c9132c91cf70ca4520bd1c (patch) | |
tree | 99a44d5a374afc0747138d353c32872fd5979460 /src/common/address.c | |
parent | d6b2a1709d28c656dadc019fb24145e6ac400771 (diff) | |
download | tor-53a94c4b4bf2e75ec4c9132c91cf70ca4520bd1c.tar.gz tor-53a94c4b4bf2e75ec4c9132c91cf70ca4520bd1c.zip |
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.
Diffstat (limited to 'src/common/address.c')
-rw-r--r-- | src/common/address.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/common/address.c b/src/common/address.c index 8591f387e6..3a78f0be55 100644 --- a/src/common/address.c +++ b/src/common/address.c @@ -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]); } } |