[PATCH 1/4] Staging: most: fix bad min() casting

Dan Carpenter dan.carpenter at oracle.com
Tue Jul 28 15:44:09 UTC 2015


On Tue, Jul 28, 2015 at 05:16:08PM +0200, Christian Gromm wrote:
> This patch fixes wrong casting. A high value of "len" is casted to
> negative and thus the minimum resulting in memory corruption.
> 

It can't actually though, because it's capped at a PAGE_SIZE, I think.
Pretty much all kernel read/write len parameters are capped to prevent
this type of error.

> Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
> Signed-off-by: Christian Gromm <christian.gromm at microchip.com>
> ---
>  drivers/staging/most/mostcore/core.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/most/mostcore/core.c b/drivers/staging/most/mostcore/core.c
> index f4f9034..d566d8e 100644
> --- a/drivers/staging/most/mostcore/core.c
> +++ b/drivers/staging/most/mostcore/core.c
> @@ -973,7 +973,7 @@ static ssize_t store_add_link(struct most_aim_obj *aim_obj,
>  	char *mdev_devnod;
>  	char devnod_buf[STRING_SIZE];
>  	int ret;
> -	unsigned int max_len = min((int)len + 1, STRING_SIZE);
> +	size_t max_len = min(len + 1, (size_t)STRING_SIZE);

Please use min_t().  I should have said earlier.

	unsigned int max_len = min_t(size_t, len + 1, STRING_SIZE);

regards,
dan carpenter



More information about the devel mailing list