[dm-devel] [PATCH 3/4] libmpathpersist: mpath_format_readfullstatus(): use real buffer size

Benjamin Marzinski bmarzins at redhat.com
Sat Mar 14 23:16:24 UTC 2020


On Sat, Mar 07, 2020 at 12:06:04AM +0100, mwilck at suse.com wrote:
> From: Martin Wilck <mwilck at suse.com>
> 
> This changes no semantics, but it will allow changing the size of
> prin_readfd.private_buffer in a follow-up patch.
> 
Reviewed-by: Benjamin Marzinski <bmarzins at redhat.com>
> Signed-off-by: Martin Wilck <mwilck at suse.com>
> ---
>  libmpathpersist/mpath_pr_ioctl.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/libmpathpersist/mpath_pr_ioctl.c b/libmpathpersist/mpath_pr_ioctl.c
> index 8bf16c0d..8d8ca76f 100644
> --- a/libmpathpersist/mpath_pr_ioctl.c
> +++ b/libmpathpersist/mpath_pr_ioctl.c
> @@ -233,6 +233,8 @@ static void mpath_format_readfullstatus(struct prin_resp *pr_buff)
>  	uint32_t additional_length, k, tid_len_len = 0;
>  	char tempbuff[MPATH_MAX_PARAM_LEN];
>  	struct prin_fulldescr fdesc;
> +	static const int pbuf_size =
> +		sizeof(pr_buff->prin_descriptor.prin_readfd.private_buffer);
>  
>  	convert_be32_to_cpu(&pr_buff->prin_descriptor.prin_readfd.prgeneration);
>  	convert_be32_to_cpu(&pr_buff->prin_descriptor.prin_readfd.number_of_descriptor);
> @@ -244,16 +246,18 @@ static void mpath_format_readfullstatus(struct prin_resp *pr_buff)
>  	}
>  
>  	additional_length = pr_buff->prin_descriptor.prin_readfd.number_of_descriptor;
> -	if (additional_length > MPATH_MAX_PARAM_LEN) {
> +	if (additional_length > pbuf_size) {
>  		condlog(3, "PRIN length %u exceeds max length %d", additional_length,
> -			MPATH_MAX_PARAM_LEN);
> +			pbuf_size);
>  		return;
>  	}
>  
>  	memset(&fdesc, 0, sizeof(struct prin_fulldescr));
>  
> -	memcpy( tempbuff, pr_buff->prin_descriptor.prin_readfd.private_buffer,MPATH_MAX_PARAM_LEN );
> -	memset(&pr_buff->prin_descriptor.prin_readfd.private_buffer, 0, MPATH_MAX_PARAM_LEN);
> +	memcpy( tempbuff, pr_buff->prin_descriptor.prin_readfd.private_buffer,
> +		pbuf_size);
> +	memset(&pr_buff->prin_descriptor.prin_readfd.private_buffer, 0,
> +	       pbuf_size);
>  
>  	p =(unsigned char *)tempbuff;
>  	ppbuff = (char *)pr_buff->prin_descriptor.prin_readfd.private_buffer;
> -- 
> 2.25.1




More information about the dm-devel mailing list