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; }