diff --git a/src/sockutil.c b/src/sockutil.c index dc0bce8..54a9d08 100644 --- a/src/sockutil.c +++ b/src/sockutil.c @@ -42,7 +42,9 @@ const char* sockaddr_address_string( const struct sockaddr* sa, char* dest, size ret = inet_ntop( AF_INET, &in->sin_addr, dest, len ); } else if ( sa->sa_family == AF_INET6 ) { ret = inet_ntop( AF_INET6, &in6->sin6_addr, dest, len ); - } else { + } + + if ( ret == NULL ) { strncpy( dest, "???", len ); } diff --git a/tests/unit/check_sockutil.c b/tests/unit/check_sockutil.c index bc5c661..0c8332a 100644 --- a/tests/unit/check_sockutil.c +++ b/tests/unit/check_sockutil.c @@ -76,10 +76,10 @@ START_TEST( test_sockaddr_address_string_doesnt_overflow_short_buffer ) v4->sin_port = htons( 4777 ); ck_assert_int_eq( 1, inet_pton( AF_INET, "192.168.0.1", &v4->sin_addr )); - result = sockaddr_address_string( &sa, &testbuf[0], 4 ); + result = sockaddr_address_string( &sa, &testbuf[0], 2 ); ck_assert( result == NULL ); - ck_assert_str_eq( "", testbuf ); + ck_assert_str_eq( "??", testbuf ); } END_TEST