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 <[email protected]>
CID: 1355598 Signed-off-by: Jakob Sinclair <[email protected]> --- 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) {
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
