summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2013-08-29 15:59:05 +0000
committerjhb <jhb@FreeBSD.org>2013-08-29 15:59:05 +0000
commit5875a10cf6729e642e46a8a454c9afbc33f05de8 (patch)
tree637bbae1ecd1af77b2aa5db9a3c8fa46677f2a8a
parentf31f23f6612c6105f7ac2b9c6f094d361565dfab (diff)
downloadFreeBSD-src-5875a10cf6729e642e46a8a454c9afbc33f05de8.zip
FreeBSD-src-5875a10cf6729e642e46a8a454c9afbc33f05de8.tar.gz
Don't return an error for socket timeouts that are too large. Just
cap them to INT_MAX ticks instead. PR: kern/181416 (r254699 really) Requested by: bde MFC after: 2 weeks
-rw-r--r--sys/kern/uipc_socket.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 4d0eac4..75fd04b 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -2698,17 +2698,12 @@ sosetopt(struct socket *so, struct sockopt *sopt)
sizeof tv);
if (error)
goto bad;
-
- if (tv.tv_sec < 0 || tv.tv_sec > INT_MAX / hz ||
- tv.tv_usec < 0 || tv.tv_usec >= 1000000) {
+ if (tv.tv_sec < 0 || tv.tv_usec < 0 ||
+ tv.tv_usec >= 1000000) {
error = EDOM;
goto bad;
}
val = tvtohz(&tv);
- if (val == INT_MAX) {
- error = EDOM;
- goto bad;
- }
switch (sopt->sopt_name) {
case SO_SNDTIMEO:
OpenPOWER on IntegriCloud