Mesa (master): r600: Fix stack overflow

Nicolai Hähnle nh at kemper.freedesktop.org
Mon Jan 30 14:31:31 UTC 2017


Module: Mesa
Branch: master
Commit: a41f2527ae8ae5432b99c88863fbdf2f0b5f04ad
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a41f2527ae8ae5432b99c88863fbdf2f0b5f04ad

Author: Bartosz Tomczyk <bartosz.tomczyk86 at gmail.com>
Date:   Mon Jan 30 14:07:45 2017 +0100

r600: Fix stack overflow

Commit 7b5878ee0491e7a93914389a8369cd6752b9757d increased number of
outputs to 64, but left output array intact. This caused stack overflow
when number of outputs is bigger then 32. Found by ASAN.

Cc: "12.0 13.0 17.0" <mesa-stable at lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/gallium/drivers/r600/r600_shader.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index b692e7f..b80a3f8 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -2924,7 +2924,7 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
 	struct pipe_stream_output_info so = pipeshader->selector->so;
 	struct tgsi_full_immediate *immediate;
 	struct r600_shader_ctx ctx;
-	struct r600_bytecode_output output[32];
+	struct r600_bytecode_output output[ARRAY_SIZE(shader->output)];
 	unsigned output_done, noutput;
 	unsigned opcode;
 	int i, j, k, r = 0;




More information about the mesa-commit mailing list