radeonsi: check if value is negative
authorJakob Sinclair <sinclair.jakob@openmailbox.org>
Mon, 25 Apr 2016 07:03:52 +0000 (09:03 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 28 Apr 2016 09:33:38 +0000 (11:33 +0200)
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 <sinclair.jakob@openmailbox.org>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_state.c

index 06798f2..c214932 100644 (file)
@@ -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) {