aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2010-02-09 22:30:51 +0000
committerXin LI <delphij@FreeBSD.org>2010-02-09 22:30:51 +0000
commit5cb9c68cc97026748f7a0889fa07646b51f27541 (patch)
treeb0e7379f53d44bb1702fe8769f453e089f5fc10a /sys
parent61d033d4365caf06b04c7937fec2585a4f04c0d3 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/compat/linux/linux_socket.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index 396a71e84950..d94d9263f8ea 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -128,7 +128,7 @@ do_sa_get(struct sockaddr **sap, const struct osockaddr *osa, int *osalen,
bdom = linux_to_bsd_domain(kosa->sa_family);
if (bdom == -1) {
- error = EINVAL;
+ error = EAFNOSUPPORT;
goto out;
}
@@ -157,8 +157,13 @@ do_sa_get(struct sockaddr **sap, const struct osockaddr *osa, int *osalen,
}
} else
#endif
- if (bdom == AF_INET)
+ if (bdom == AF_INET) {
alloclen = sizeof(struct sockaddr_in);
+ if (*osalen < alloclen) {
+ error = EINVAL;
+ goto out;
+ }
+ }
sa = (struct sockaddr *) kosa;
sa->sa_family = bdom;