Browse Source

Detect tor_addr_to_str failure in tor_dup_addr.

This avoids a possible strdup of an uninitialized buffer.

Fixes 4529; fix on 0.2.1.3-alpha; reported by troll_un.
Nick Mathewson 12 years ago
parent
commit
3ebe960f3f
2 changed files with 10 additions and 2 deletions
  1. 5 0
      changes/bug4529
  2. 5 2
      src/common/address.c

+ 5 - 0
changes/bug4529

@@ -0,0 +1,5 @@
+  o Minor bufixes:
+    - If we had ever tried to call tor_addr_to_str on an address of
+      unknown type, we would have done a strdup on an uninitialized
+      buffer. Now we won't. Fixes bug 4529; bugfix on 0.2.1.3-alpha.
+      Reported by "troll_un".

+ 5 - 2
src/common/address.c

@@ -945,8 +945,11 @@ char *
 tor_dup_addr(const tor_addr_t *addr)
 {
   char buf[TOR_ADDR_BUF_LEN];
-  tor_addr_to_str(buf, addr, sizeof(buf), 0);
-  return tor_strdup(buf);
+  if (tor_addr_to_str(buf, addr, sizeof(buf), 0)) {
+    return tor_strdup(buf);
+  } else {
+    return tor_strdup("<unknown address type>");
+  }
 }
 
 /** Return a string representing the address <b>addr</b>.  This string is