[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