From 76b8c5cc602eda19c91b842b02f84564c18e79a6 Mon Sep 17 00:00:00 2001 From: Jakob Sinclair Date: Mon, 25 Apr 2016 09:03:52 +0200 Subject: radeonsi: check if value is negative MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 a bit safer but overall should not have a big impact. CID: 1355598 Signed-off-by: Jakob Sinclair Signed-off-by: Marek Olšák --- src/gallium/drivers/radeonsi/si_state.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index 06798f2ac60..c214932e28b 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) { -- cgit v1.2.3