lib: make sockunion2str safer to use

It's mostly used for logging, and the return value is never
checked, so try to make it valid.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 53009d387a633997b16d32224b50451b5c81b61a)
This commit is contained in:
Timo Teräs 2015-05-23 11:08:38 +03:00 committed by Daniel Walton
parent d3830f1fa4
commit 67e2b6f013

View File

@ -166,13 +166,20 @@ str2sockunion (const char *str, union sockunion *su)
const char *
sockunion2str (union sockunion *su, char *buf, size_t len)
{
if (su->sa.sa_family == AF_INET)
return inet_ntop (AF_INET, &su->sin.sin_addr, buf, len);
switch (sockunion_family(su))
{
case AF_UNSPEC:
snprintf (buf, len, "(unspec)");
return buf;
case AF_INET:
return inet_ntop (AF_INET, &su->sin.sin_addr, buf, len);
#ifdef HAVE_IPV6
else if (su->sa.sa_family == AF_INET6)
return inet_ntop (AF_INET6, &su->sin6.sin6_addr, buf, len);
case AF_INET6:
return inet_ntop (AF_INET6, &su->sin6.sin6_addr, buf, len);
#endif /* HAVE_IPV6 */
return NULL;
}
snprintf (buf, len, "(af %d)", sockunion_family(su));
return buf;
}
union sockunion *