Re: [PATCH rdma-next] RDMA/iwcm: fix string truncation error

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

 



On Tue, Feb 19, 2019 at 01:09:57PM +0200, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> 
> The strlen() check at the beginning of iw_cm_map() ensures that devname
> and ifname strings are less than destinations to which they are supposed
> to be copied. Change strncpy() call to be strcpy(), because we are
> protected from overflow.
> 
> This fix the compilation warning below:
> 
> In file included from ./include/linux/dma-mapping.h:6,
>                  from drivers/infiniband/core/iwcm.c:38:
> In function _strncpy_,
>     inlined from _iw_cm_map_ at drivers/infiniband/core/iwcm.c:519:2:
> ./include/linux/string.h:253:9: warning: ___builtin_strncpy_ specified
> bound 32 equals destination size [-Wstringop-truncation]
>   return __builtin_strncpy(p, q, size);
>          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> Fixes: d53ec8af56d5 ("RDMA/iwcm: Don't copy past the end of dev_name() string")
> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
>  drivers/infiniband/core/iwcm.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c
> index 350ea2bab78a..732637c913d9 100644
> +++ b/drivers/infiniband/core/iwcm.c
> @@ -505,7 +505,7 @@ static int iw_cm_map(struct iw_cm_id *cm_id, bool active)
>  {
>  	const char *devname = dev_name(&cm_id->device->dev);
>  	const char *ifname = cm_id->device->iwcm->ifname;
> -	struct iwpm_dev_data pm_reg_msg;
> +	struct iwpm_dev_data pm_reg_msg = {};

Huh. This looks like a kernel stack data leak fix? The arrays in that
struct are passed to ibl_put_attr at least.

Lets remark about that in the commit message.

Applied to for-next

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux