Re: [PATCH 3/3] target: Fix parameter list length checking in MODE SELECT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2013-02-08 at 15:18 -0800, Roland Dreier wrote:
> From: Roland Dreier <roland@xxxxxxxxxxxxxxx>
> 
> An empty parameter list (length == 0) is not an error, so succeed MODE
> SELECT in this case.  If the parameter list length is too small,
> return the correct sense code of PARAMETER LIST LENGTH ERROR.
> 
> Signed-off-by: Roland Dreier <roland@xxxxxxxxxxxxxxx>
> ---

Applied.

Thanks Roland!

--nab

>  drivers/target/target_core_spc.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c
> index 2d88f08..73c5d53 100644
> --- a/drivers/target/target_core_spc.c
> +++ b/drivers/target/target_core_spc.c
> @@ -983,6 +983,14 @@ static sense_reason_t spc_emulate_modeselect(struct se_cmd *cmd)
>  	int ret = 0;
>  	int i;
>  
> +	if (!cmd->data_length) {
> +		target_complete_cmd(cmd, GOOD);
> +		return 0;
> +	}
> +
> +	if (cmd->data_length < off + 2)
> +		return TCM_PARAMETER_LIST_LENGTH_ERROR;
> +
>  	buf = transport_kmap_data_sg(cmd);
>  	if (!buf)
>  		return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
> @@ -1007,6 +1015,11 @@ static sense_reason_t spc_emulate_modeselect(struct se_cmd *cmd)
>  	goto out;
>  
>  check_contents:
> +	if (cmd->data_length < off + length) {
> +		ret = TCM_PARAMETER_LIST_LENGTH_ERROR;
> +		goto out;
> +	}
> +
>  	if (memcmp(buf + off, tbuf, length))
>  		ret = TCM_INVALID_PARAMETER_LIST;
>  


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux