gallium/vbuf: avoid segfault when we get invalid glDrawRangeElements()
authorBrian Paul <brianp@vmware.com>
Mon, 19 Jun 2017 18:22:09 +0000 (12:22 -0600)
committerBrian Paul <brianp@vmware.com>
Tue, 20 Jun 2017 14:03:18 +0000 (08:03 -0600)
commitd8148ed10ae5faea6f88f2f964797f4b0590c083
tree05c96f82a10d8797e8a4286f3ca26ec5403e23fb
parent2a9d8a45a6edec7c8f6f670951b0fe6fd781c33f
gallium/vbuf: avoid segfault when we get invalid glDrawRangeElements()

A common user error is to call glDrawRangeElements() with the 'end'
argument being one too large.  If we use the vbuf module to translate
some vertex attributes this error can cause us to read past the end of
the mapped hardware buffer, resulting in a crash.

This patch adjusts the vertex count to avoid that issue.  Typically,
the vertex_count gets decremented by one.

This fixes crashes with the Unigine Tropics and Sanctuary demos with older
VMware hardware versions.  The issue isn't hit with VGPU10 because we
don't hit this fallback.

No piglit changes.

CC: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/auxiliary/util/u_vbuf.c