From 67e2b6f013abb23b42f9e2f85e5a3a44916b617c Mon Sep 17 00:00:00 2001 From: Timo Teräs Date: Sat, 23 May 2015 11:08:38 +0300 Subject: lib: make sockunion2str safer to use MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: David Lamparter (cherry picked from commit 53009d387a633997b16d32224b50451b5c81b61a) --- lib/sockunion.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'lib/sockunion.c') diff --git a/lib/sockunion.c b/lib/sockunion.c index fdff61f54..4fd5f1444 100644 --- a/lib/sockunion.c +++ b/lib/sockunion.c @@ -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 * -- cgit v1.2.3