From 0906d5d504eb0209556787b020a6df58b4cc3069 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marcin=20=C5=9Alusarz?= Date: Fri, 24 Jul 2020 19:19:07 +0200 Subject: [PATCH] mesa: fix out of bounds access in glGetFramebufferParameterivEXT MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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: --- src/mesa/main/fbobject.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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)"); -- 2.30.2