Skip to content

Commit

Permalink
af_unix: fix shutdown parameter checking
Browse files Browse the repository at this point in the history
Return -EINVAL rather than 0 given an invalid "mode" parameter.

Signed-off-by: Xi Wang <xi.wang@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Xi Wang authored and David S. Miller committed Aug 31, 2012
1 parent 46b66d7 commit fc61b92
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions net/unix/af_unix.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit fc61b92

Please sign in to comment.