aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/platform/posix/posix_udp.c11
-rw-r--r--src/platform/udp_test.c1
2 files changed, 11 insertions, 1 deletions
diff --git a/src/platform/posix/posix_udp.c b/src/platform/posix/posix_udp.c
index 1e2f6df9..667fbaec 100644
--- a/src/platform/posix/posix_udp.c
+++ b/src/platform/posix/posix_udp.c
@@ -215,9 +215,18 @@ nni_plat_udp_open(nni_plat_udp **upp, nni_sockaddr *bindaddr)
struct sockaddr_storage sa;
int rv;
- if ((salen = nni_posix_nn2sockaddr(&sa, bindaddr)) < 1) {
+ if (bindaddr == NULL) {
return (NNG_EADDRINVAL);
}
+ switch (bindaddr->s_family) {
+ case NNG_AF_INET:
+ case NNG_AF_INET6:
+ break;
+ default:
+ return (NNG_EADDRINVAL);
+ }
+ salen = nni_posix_nn2sockaddr(&sa, bindaddr);
+ NNI_ASSERT(salen > 1);
// UDP opens can actually run synchronously.
if ((udp = NNI_ALLOC_STRUCT(udp)) == NULL) {
diff --git a/src/platform/udp_test.c b/src/platform/udp_test.c
index 7cafff1e..211c985c 100644
--- a/src/platform/udp_test.c
+++ b/src/platform/udp_test.c
@@ -267,6 +267,7 @@ test_udp_bogus_bind(void)
// Some platforms reject IPC addresses altogether (Windows),
// whereas others just say it's not supported with UDP.
NUTS_ASSERT((rv == NNG_ENOTSUP) || (rv == NNG_EADDRINVAL));
+ NUTS_MSG("Result was %d %s", rv, nng_strerror(rv));
// NULL address also bad.
NUTS_FAIL(nng_udp_open(&u, NULL), NNG_EADDRINVAL);