lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080828213541.GS9193@ghostprotocols.net>
Date:	Thu, 28 Aug 2008 18:35:41 -0300
From:	Arnaldo Carvalho de Melo <acme@...hat.com>
To:	Gerrit Renker <gerrit@....abdn.ac.uk>
Cc:	dccp@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [PATCH 14/37] dccp: Tidy up setsockopt calls

Em Thu, Aug 28, 2008 at 07:44:49PM +0200, Gerrit Renker escreveu:
> This splits the setsockopt calls into two groups, depending on whether an
> integer argument (val) is required and whether routines being called do
> their own locking.
> 
> Some options (such as setting the CCID) use u8 rather than int, so that for
> these the test with regard to integer-sizeof can not be used.
> 
> The second switch-case statement now only has those statements which need
> locking and which make use of `val'.
> 
> Signed-off-by: Gerrit Renker <gerrit@....abdn.ac.uk>
> Acked-by: Ian McDonald <ian.mcdonald@...di.co.nz>



> ---
>  net/dccp/proto.c |   31 ++++++++++++++++---------------
>  1 files changed, 16 insertions(+), 15 deletions(-)
> 
> --- a/net/dccp/proto.c
> +++ b/net/dccp/proto.c
> @@ -511,26 +511,27 @@ static int do_dccp_setsockopt(struct sock *sk, int level, int optname,
>  	struct dccp_sock *dp = dccp_sk(sk);
>  	int val, err = 0;
>  
> -	if (optlen < sizeof(int))
> -		return -EINVAL;
> -
> -	if (get_user(val, (int __user *)optval))
> -		return -EFAULT;
> -
> -	if (optname == DCCP_SOCKOPT_SERVICE)
> -		return dccp_setsockopt_service(sk, val, optval, optlen);
> -
> -	lock_sock(sk);
>  	switch (optname) {
>  	case DCCP_SOCKOPT_PACKET_SIZE:
>  		DCCP_WARN("sockopt(PACKET_SIZE) is deprecated: fix your app\n");
> -		err = 0;
> -		break;
> +		return 0;
>  	case DCCP_SOCKOPT_CHANGE_L:
>  	case DCCP_SOCKOPT_CHANGE_R:
>  		DCCP_WARN("sockopt(CHANGE_L/R) is deprecated: fix your app\n");
> -		err = 0;
> -		break;
> +		return 0;
> +	default:
> +		if (optlen < sizeof(int))
> +			return -EINVAL;
> +
> +		if (get_user(val, (int __user *)optval))
> +			return -EFAULT;
> +
> +		if (optname == DCCP_SOCKOPT_SERVICE)
> +			return dccp_setsockopt_service(sk, val, optval, optlen);

What is in the default could well continue outside the switch
statatement, since all the other cases return directly.

Other than that:

Acked-by: Arnaldo Carvalho de Melo <acme@...hat.com>

> +	}
> +
> +	lock_sock(sk);
> +	switch (optname) {
>  	case DCCP_SOCKOPT_SERVER_TIMEWAIT:
>  		if (dp->dccps_role != DCCP_ROLE_SERVER)
>  			err = -EOPNOTSUPP;
> @@ -547,8 +548,8 @@ static int do_dccp_setsockopt(struct sock *sk, int level, int optname,
>  		err = -ENOPROTOOPT;
>  		break;
>  	}
> -
>  	release_sock(sk);
> +
>  	return err;
>  }
>  
> -- 
> 1.6.0.rc2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe dccp" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ