diff options
author | nectar <nectar@FreeBSD.org> | 2002-08-09 12:58:11 +0000 |
---|---|---|
committer | nectar <nectar@FreeBSD.org> | 2002-08-09 12:58:11 +0000 |
commit | 6cc73b8947429ac97c2d680a6439d5d67678de07 (patch) | |
tree | 2e5c0f209c3a1c2960ece2e906ce0932c5bc9507 /sys/kern/uipc_syscalls.c | |
parent | dd72b72c9a7d8a79c710a9f9e5d548a64b5425bd (diff) | |
download | FreeBSD-src-6cc73b8947429ac97c2d680a6439d5d67678de07.zip FreeBSD-src-6cc73b8947429ac97c2d680a6439d5d67678de07.tar.gz |
While we're at it, add range checks similar to those in previous commit to
getsockname() and getpeername(), too.
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
-rw-r--r-- | sys/kern/uipc_syscalls.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 9eb2435..35f89f2 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -1354,6 +1354,10 @@ getsockname1(td, uap, compat) error = copyin(uap->alen, &len, sizeof (len)); if (error) goto done1; + if (len < 0) { + error = EINVAL; + goto done1; + } sa = 0; error = (*so->so_proto->pr_usrreqs->pru_sockaddr)(so, &sa); if (error) @@ -1438,6 +1442,10 @@ getpeername1(td, uap, compat) error = copyin(uap->alen, &len, sizeof (len)); if (error) goto done1; + if (len < 0) { + error = EINVAL; + goto done1; + } sa = 0; error = (*so->so_proto->pr_usrreqs->pru_peeraddr)(so, &sa); if (error) |