[Mesa-dev] [PATCH 1/1] radeonsi: check if value is negative

Nicolai Hähnle nhaehnle at gmail.com
Wed Apr 27 23:49:09 UTC 2016


On 23.04.2016 07:05, Jakob Sinclair wrote:
> Fixes a Coverity defect by adding checks to see if a value is negative
> before using it to index an array. By checking the value first it makes
> the code more clean and it doesn't change the outcome of the function.

Thanks. I don't think that case should happen, though. I'd be happier 
with just assert()s. (I'd also be okay with an assert(!"error message") 
if you want to keep the if statement). With such asserts (obviously, the 
second hunk needs to change a bit more), you can add my

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

> CID: 1355598
>
> Signed-off-by: Jakob Sinclair <sinclair.jakob at openmailbox.org>
> ---
>   src/gallium/drivers/radeonsi/si_state.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
> index 7ae6e8a..8bd527b 100644
> --- a/src/gallium/drivers/radeonsi/si_state.c
> +++ b/src/gallium/drivers/radeonsi/si_state.c
> @@ -1762,6 +1762,9 @@ static uint32_t si_translate_buffer_dataformat(struct pipe_screen *screen,
>   					       const struct util_format_description *desc,
>   					       int first_non_void)
>   {
> +	if (first_non_void < 0)
> +		return V_008F0C_BUF_DATA_FORMAT_INVALID;
> +
>   	unsigned type = desc->channel[first_non_void].type;
>   	int i;
>
> @@ -1836,7 +1839,7 @@ static uint32_t si_translate_buffer_numformat(struct pipe_screen *screen,
>   					      const struct util_format_description *desc,
>   					      int first_non_void)
>   {
> -	if (desc->format == PIPE_FORMAT_R11G11B10_FLOAT)
> +	if (desc->format == PIPE_FORMAT_R11G11B10_FLOAT || first_non_void < 0)
>   		return V_008F0C_BUF_NUM_FORMAT_FLOAT;
>
>   	switch (desc->channel[first_non_void].type) {
>


More information about the mesa-dev mailing list