[tor-commits] [tor/master] Make tor_addr_is_internal log the calling function on error
nickm at torproject.org
nickm at torproject.org
Fri Oct 12 15:36:36 UTC 2012
commit 8586611718ee9c4cc81eb8fe50c937619393ade6
Author: Nick Mathewson <nickm at torproject.org>
Date: Fri Oct 12 11:34:54 2012 -0400
Make tor_addr_is_internal log the calling function on error
This might make it a little easier to track down bug 7086.
---
changes/addr_is_internal_debug | 4 ++++
src/common/address.c | 7 ++++---
src/common/address.h | 5 ++++-
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/changes/addr_is_internal_debug b/changes/addr_is_internal_debug
new file mode 100644
index 0000000..6de221b
--- /dev/null
+++ b/changes/addr_is_internal_debug
@@ -0,0 +1,4 @@
+ o Minor features:
+ - Log the call-site of a failed tor_addr_is_internal(), so that we
+ can learn who is calling it with AF_UNSPECIFIED and fix the
+ second (unrelated) part of bug 7086.
diff --git a/src/common/address.c b/src/common/address.c
index 9a61872..2c0c97d 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -305,7 +305,8 @@ tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr)
* also treated as internal for now.)
*/
int
-tor_addr_is_internal(const tor_addr_t *addr, int for_listening)
+tor_addr_is_internal_(const tor_addr_t *addr, int for_listening,
+ const char *filename, int lineno)
{
uint32_t iph4 = 0;
uint32_t iph6[4];
@@ -355,8 +356,8 @@ tor_addr_is_internal(const tor_addr_t *addr, int for_listening)
/* unknown address family... assume it's not safe for external use */
/* rather than tor_assert(0) */
- log_warn(LD_BUG, "tor_addr_is_internal() called with a non-IP address of "
- "type %d", (int)v_family);
+ log_warn(LD_BUG, "tor_addr_is_internal() called from %s:%d with a "
+ "non-IP address of type %d", filename, lineno, (int)v_family);
tor_fragile_assert();
return 1;
}
diff --git a/src/common/address.h b/src/common/address.h
index 68775fb..9e7d750 100644
--- a/src/common/address.h
+++ b/src/common/address.h
@@ -168,7 +168,10 @@ int tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2,
unsigned int tor_addr_hash(const tor_addr_t *addr);
int tor_addr_is_v4(const tor_addr_t *addr);
-int tor_addr_is_internal(const tor_addr_t *ip, int for_listening);
+int tor_addr_is_internal_(const tor_addr_t *ip, int for_listening,
+ const char *filename, int lineno);
+#define tor_addr_is_internal(addr, for_listening) \
+ tor_addr_is_internal_((addr), (for_listening), _SHORT_FILE_, __LINE__)
/** Longest length that can be required for a reverse lookup name. */
/* 32 nybbles, 32 dots, 8 characters of "ip6.arpa", 1 NUL: 73 characters. */
More information about the tor-commits
mailing list