From: Nicolai Hähnle <[email protected]>

MATERIALFV may end up reading up to 4 floats from the passed parameter.

This should really set a GL_INVALID_ENUM error in the cases where it
matters, but does anybody really care?

Found by ASAN in piglit gl-1.0-beginend-coverage.
---
 src/mesa/main/api_loopback.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/api_loopback.c b/src/mesa/main/api_loopback.c
index 8b63d9c..1db6ce1 100644
--- a/src/mesa/main/api_loopback.c
+++ b/src/mesa/main/api_loopback.c
@@ -858,21 +858,22 @@ void GLAPIENTRY
 _mesa_Materialf( GLenum face, GLenum pname, GLfloat param )
 {
    GLfloat fparam[4];
    fparam[0] = param;
    MATERIALFV( face, pname, fparam );
 }
 
 void GLAPIENTRY
 _mesa_Materiali(GLenum face, GLenum pname, GLint param )
 {
-   GLfloat p = (GLfloat) param;
+   GLfloat p[4];
+   p[0] = (GLfloat) param;
    MATERIALFV(face, pname, &p);
 }
 
 void GLAPIENTRY
 _mesa_Materialiv(GLenum face, GLenum pname, const GLint *params )
 {
    GLfloat fparam[4];
    switch (pname) {
    case GL_AMBIENT:
    case GL_DIFFUSE:
-- 
2.9.3

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to