draw: check for an integer overflow when computing stride
[mesa.git] / src / gallium / auxiliary / draw / draw_context.c
index 0dbddb451112bf04141a54aba8677dfd11020575..4a08765c94f5e3a8b2726ec52ae2563eb04b45e2 100644 (file)
@@ -138,6 +138,7 @@ boolean draw_init(struct draw_context *draw)
    draw->clip_z = TRUE;
 
    draw->pt.user.planes = (float (*) [DRAW_TOTAL_CLIP_PLANES][4]) &(draw->plane[0]);
+   draw->pt.user.eltMax = ~0;
 
    if (!draw_pipeline_init( draw ))
       return FALSE;
@@ -738,6 +739,7 @@ draw_current_shader_clipvertex_output(const struct draw_context *draw)
 uint
 draw_current_shader_clipdistance_output(const struct draw_context *draw, int index)
 {
+   debug_assert(index < PIPE_MAX_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT);
    if (draw->gs.geometry_shader)
       return draw->gs.geometry_shader->clipdistance_output[index];
    return draw->vs.clipdistance_output[index];
@@ -756,6 +758,7 @@ draw_current_shader_num_written_clipdistances(const struct draw_context *draw)
 uint
 draw_current_shader_culldistance_output(const struct draw_context *draw, int index)
 {
+   debug_assert(index < PIPE_MAX_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT);
    if (draw->gs.geometry_shader)
       return draw->gs.geometry_shader->culldistance_output[index];
    return draw->vs.vertex_shader->culldistance_output[index];