Skip to content

Commit c5a8a84

Browse files
peilin-yeummakynes
authored andcommitted
ipvs: Fix uninit-value in do_ip_vs_set_ctl()
do_ip_vs_set_ctl() is referencing uninitialized stack value when `len` is zero. Fix it. Reported-by: [email protected] Link: https://syzkaller.appspot.com/bug?id=46ebfb92a8a812621a001ef04d90dfa459520fe2 Suggested-by: Julian Anastasov <[email protected]> Signed-off-by: Peilin Ye <[email protected]> Acked-by: Julian Anastasov <[email protected]> Reviewed-by: Simon Horman <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent d5608a0 commit c5a8a84

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

net/netfilter/ipvs/ip_vs_ctl.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2508,6 +2508,10 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, sockptr_t ptr, unsigned int len)
25082508
/* Set timeout values for (tcp tcpfin udp) */
25092509
ret = ip_vs_set_timeout(ipvs, (struct ip_vs_timeout_user *)arg);
25102510
goto out_unlock;
2511+
} else if (!len) {
2512+
/* No more commands with len == 0 below */
2513+
ret = -EINVAL;
2514+
goto out_unlock;
25112515
}
25122516

25132517
usvc_compat = (struct ip_vs_service_user *)arg;
@@ -2584,9 +2588,6 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, sockptr_t ptr, unsigned int len)
25842588
break;
25852589
case IP_VS_SO_SET_DELDEST:
25862590
ret = ip_vs_del_dest(svc, &udest);
2587-
break;
2588-
default:
2589-
ret = -EINVAL;
25902591
}
25912592

25922593
out_unlock:

0 commit comments

Comments
 (0)