summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroki Sato <hrs@FreeBSD.org>2015-11-03 00:46:06 +0000
committerHiroki Sato <hrs@FreeBSD.org>2015-11-03 00:46:06 +0000
commitc56e91b3459a5e149cbeca8dfc835b4b05971590 (patch)
treeef9a53751e18ca02219219d6db1facc341640817
parenta0962574824985b8113cc6c84e50492313007bf8 (diff)
Notes
-rw-r--r--lib/libc/net/getnameinfo.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/libc/net/getnameinfo.c b/lib/libc/net/getnameinfo.c
index c81318926ba12..4b7aecbc6f021 100644
--- a/lib/libc/net/getnameinfo.c
+++ b/lib/libc/net/getnameinfo.c
@@ -122,7 +122,8 @@ getnameinfo(const struct sockaddr *sa, socklen_t salen,
afd = find_afd(sa->sa_family);
if (afd == NULL)
return (EAI_FAMILY);
- if (sa->sa_family == PF_LOCAL) {
+ switch (sa->sa_family) {
+ case PF_LOCAL:
/*
* PF_LOCAL uses variable sa->sa_len depending on the
* content length of sun_path. Require 1 byte in
@@ -132,8 +133,17 @@ getnameinfo(const struct sockaddr *sa, socklen_t salen,
salen <= afd->a_socklen -
sizeofmember(struct sockaddr_un, sun_path))
return (EAI_FAIL);
- } else if (salen != afd->a_socklen)
- return (EAI_FAIL);
+ break;
+ case PF_LINK:
+ if (salen <= afd->a_socklen -
+ sizeofmember(struct sockaddr_dl, sdl_data))
+ return (EAI_FAIL);
+ break;
+ default:
+ if (salen != afd->a_socklen)
+ return (EAI_FAIL);
+ break;
+ }
return ((*afd->a_func)(afd, sa, salen, host, hostlen,
serv, servlen, flags));