Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc61b928 authored by Xi Wang's avatar Xi Wang Committed by David S. Miller
Browse files

af_unix: fix shutdown parameter checking



Return -EINVAL rather than 0 given an invalid "mode" parameter.

Signed-off-by: default avatarXi Wang <xi.wang@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 46b66d70
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -2060,10 +2060,14 @@ static int unix_shutdown(struct socket *sock, int mode)
	struct sock *sk = sock->sk;
	struct sock *other;

	mode = (mode+1)&(RCV_SHUTDOWN|SEND_SHUTDOWN);

	if (!mode)
		return 0;
	if (mode < SHUT_RD || mode > SHUT_RDWR)
		return -EINVAL;
	/* This maps:
	 * SHUT_RD   (0) -> RCV_SHUTDOWN  (1)
	 * SHUT_WR   (1) -> SEND_SHUTDOWN (2)
	 * SHUT_RDWR (2) -> SHUTDOWN_MASK (3)
	 */
	++mode;

	unix_state_lock(sk);
	sk->sk_shutdown |= mode;