diff --git a/src/common/address.c b/src/common/address.c
index b41456f8de..06e4a1d005 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -470,13 +470,17 @@ tor_addr_parse_PTR_name(tor_addr_t *result, const char *address,
return 0;
}
-/** Convert addr to an in-addr.arpa name or a .ip6.arpa name, and store
- * the result in the outlen-byte buffer at out. Return 0 on
- * success, -1 on failure. */
+/** Convert addr to an in-addr.arpa name or a .ip6.arpa name,
+ * and store the result in the outlen-byte buffer at
+ * out. Return the number of chars written to out, 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;
}