On 18.05.2016 08:17, Jakob Sinclair wrote:
In the function r600_test_dma the max_width and max_height can be set to
zero.

Thanks for looking into that. Can they really? I see

        max_width = MIN2(tsrc.width0, tdst.width0);
        max_height = MIN2(tsrc.height0, tdst.height0);

and

        tsrc.width0 = (rand() % max_tex_side_gen) + 1;

and similarly for tdst.

Given that, I'd prefer instead an assert(max_width > 0 && max_height > 0) to help Coverity out.

Thanks,
Nicolai

These variables are later used to do a modulo operation which can
lead to unexpected behavior if they are zero. This patch corrects that
by first checking if the max_width or max_height are zero and if they
are it sets width or height to one. Issue was discoverd by Coverity.

CID: 1361542, 1361543

Signed-off-by: Jakob Sinclair <sinclair.ja...@openmailbox.org>
---
  src/gallium/drivers/radeon/r600_test_dma.c | 11 +++++++++--
  1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_test_dma.c 
b/src/gallium/drivers/radeon/r600_test_dma.c
index c203b4d..37d6202 100644
--- a/src/gallium/drivers/radeon/r600_test_dma.c
+++ b/src/gallium/drivers/radeon/r600_test_dma.c
@@ -345,8 +345,15 @@ void r600_test_dma(struct r600_common_screen *rscreen)
                                        dstx = rand() % (tdst.width0 - width + 1) 
& ~0x7;
                                        dsty = rand() % (tdst.height0 - height + 1) 
& ~0x7;
                                } else {
-                                       width = (rand() % max_width) + 1;
-                                       height = (rand() % max_height) + 1;
+                                       if (max_width == 0)
+                                               width = 1;
+                                       else
+                                               width = (rand() % max_width) + 
1;
+
+                                       if (max_height == 0)
+                                               height = 1;
+                                       else
+                                               height = (rand() % max_height) 
+ 1;

                                        srcx = rand() % (tsrc.width0 - width + 
1);
                                        srcy = rand() % (tsrc.height0 - height 
+ 1);

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to