[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-scsi
Subject:    Re: [PATCH] scsi: ibmvscsi: Improve strings handling
From:       Tyrel Datwyler <tyreld () linux ! vnet ! ibm ! com>
Date:       2018-06-26 22:29:15
Message-ID: abbca8ad-6b59-e701-91d5-a3a7ebb0e31d () linux ! vnet ! ibm ! com
[Download RAW message or body]

On 06/26/2018 01:35 PM, Breno Leitao wrote:

The subject line should have been updated to [PATCH v2] to clue recipients to the \
fact that this is an updated version and not a resend or accidental duplicate send.

> Currently an open firmware property is copied into partition_name variable
> without keeping a room for \0.
> 
> Later one, this variable (partition_name), which is 97 bytes long, is
> strncpyed into ibmvcsci_host_data->madapter_info->partition_name, which
> is 96 bytes long, possibly truncating it 'again' and removing the \0.
> 
> This patch simply decreases the partition name to 96 and just copy using
> strlcpy() which guarantees that the string is \0 terminated. I think there
> is no issue if this there is a truncation in this very first copy, i.e,
> when the open firmware property is read and copied into the driver for the
> very first time;
> 
> This issue also causes the following warning on GCC 8:
> 
> 	drivers/scsi/ibmvscsi/ibmvscsi.c:281:2: warning: ‘strncpy' output may be \
>                 truncated copying 96 bytes from a string of length 96 \
>                 [-Wstringop-truncation]
> 	...
> 	inlined from ‘ibmvscsi_probe' at drivers/scsi/ibmvscsi/ibmvscsi.c:2221:7:
> 	drivers/scsi/ibmvscsi/ibmvscsi.c:265:3: warning: ‘strncpy' specified bound 97 \
> equals destination size [-Wstringop-truncation] 
> CC: Bart Van Assche <bart.vanassche@wdc.com>
> CC: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
> Signed-off-by: Breno Leitao <leitao@debian.org>
> ---

Also, it is generally recommended that you record your revision history here for the \
readers/reviewers to quickly see what changed, and to make sure once the patch is \
pulled this info isn't included in the commit log.

ie.

Changes in v2:
- Addressed Bart's comment by replacing strncpy() with strlcpy()


Otherwise,

Acked-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>

> drivers/scsi/ibmvscsi/ibmvscsi.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
> index 17df76f0be3c..67a2c844e30d 100644
> --- a/drivers/scsi/ibmvscsi/ibmvscsi.c
> +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
> @@ -93,7 +93,7 @@ static int max_requests = IBMVSCSI_MAX_REQUESTS_DEFAULT;
> static int max_events = IBMVSCSI_MAX_REQUESTS_DEFAULT + 2;
> static int fast_fail = 1;
> static int client_reserve = 1;
> -static char partition_name[97] = "UNKNOWN";
> +static char partition_name[96] = "UNKNOWN";
> static unsigned int partition_number = -1;
> static LIST_HEAD(ibmvscsi_head);
> 
> @@ -262,7 +262,7 @@ static void gather_partition_info(void)
> 
> 	ppartition_name = of_get_property(of_root, "ibm,partition-name", NULL);
> 	if (ppartition_name)
> -		strncpy(partition_name, ppartition_name,
> +		strlcpy(partition_name, ppartition_name,
> 				sizeof(partition_name));
> 	p_number_ptr = of_get_property(of_root, "ibm,partition-no", NULL);
> 	if (p_number_ptr)
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic