ソースを参照

Return value bugfix of tor_addr_to_PTR_name

Returns value semantics was inconsitent between IPv4 and IPv6
Anders Sundman 12 年 前
コミット
1b97588a31
1 ファイル変更9 行追加5 行削除
  1. 9 5
      src/common/address.c

+ 9 - 5
src/common/address.c

@@ -470,13 +470,17 @@ tor_addr_parse_PTR_name(tor_addr_t *result, const char *address,
   return 0;
 }
 
-/** Convert <b>addr</b> to an in-addr.arpa name or a .ip6.arpa name, and store
- * the result in the <b>outlen</b>-byte buffer at <b>out</b>.  Return 0 on
- * success, -1 on failure. */
+/** Convert <b>addr</b> to an in-addr.arpa name or a .ip6.arpa name,
+ * and store the result in the <b>outlen</b>-byte buffer at
+ * <b>out</b>.  Return the number of chars written to <b>out</b>, not
+ * including the trailing \0, on success. Returns -1 on failure. */
 int
 tor_addr_to_PTR_name(char *out, size_t outlen,
-                                const tor_addr_t *addr)
+                     const tor_addr_t *addr)
 {
+  tor_assert(out);
+  tor_assert(addr);
+
   if (addr->family == AF_INET) {
     uint32_t a = tor_addr_to_ipv4h(addr);
 
@@ -499,7 +503,7 @@ tor_addr_to_PTR_name(char *out, size_t outlen,
       *cp++ = '.';
     }
     memcpy(cp, "ip6.arpa", 9); /* 8 characters plus NUL */
-    return 0;
+    return 32 * 2 + 8;
   }
   return -1;
 }