summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/uipc_socket.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 4233dda..f18afec 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -2504,20 +2504,19 @@ sosetopt(struct socket *so, struct sockopt *sopt)
case SO_SETFIB:
error = sooptcopyin(sopt, &optval, sizeof optval,
sizeof optval);
+ if (error)
+ goto bad;
+
if (optval < 0 || optval >= rt_numfibs) {
error = EINVAL;
goto bad;
}
if (((so->so_proto->pr_domain->dom_family == PF_INET) ||
(so->so_proto->pr_domain->dom_family == PF_INET6) ||
- (so->so_proto->pr_domain->dom_family == PF_ROUTE))) {
+ (so->so_proto->pr_domain->dom_family == PF_ROUTE)))
so->so_fibnum = optval;
- /* Note: ignore error */
- if (so->so_proto->pr_ctloutput)
- (*so->so_proto->pr_ctloutput)(so, sopt);
- } else {
+ else
so->so_fibnum = 0;
- }
break;
case SO_USER_COOKIE:
OpenPOWER on IntegriCloud