From: Marcin Ślusarz Date: Fri, 24 Jul 2020 17:19:07 +0000 (+0200) Subject: mesa: fix out of bounds access in glGetFramebufferParameterivEXT X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=0906d5d504eb0209556787b020a6df58b4cc3069;ds=inline mesa: fix out of bounds access in glGetFramebufferParameterivEXT ColorDrawBuffer is an array of MAX_DRAW_BUFFERS == 8. Found by Coverity. Signed-off-by: Marcin Ślusarz Fixes: 7534c536ca0 ("mesa: add EXT_dsa (Named)Framebuffer functions") Reviewed-by: Marek Olšák Part-of: --- diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 2f2c7dc45a9..55f2fe9bf42 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -4814,7 +4814,11 @@ _mesa_GetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, *param = fb->ColorReadBuffer; } else if (GL_DRAW_BUFFER0 <= pname && pname <= GL_DRAW_BUFFER15) { - *param = fb->ColorDrawBuffer[pname - GL_DRAW_BUFFER0]; + unsigned buffer = pname - GL_DRAW_BUFFER0; + if (buffer < ARRAY_SIZE(fb->ColorDrawBuffer)) + *param = fb->ColorDrawBuffer[buffer]; + else + _mesa_error(ctx, GL_INVALID_ENUM, "glGetFramebufferParameterivEXT(pname)"); } else { _mesa_error(ctx, GL_INVALID_ENUM, "glGetFramebufferParameterivEXT(pname)");