From: Bartosz Tomczyk Date: Mon, 30 Jan 2017 13:07:45 +0000 (+0100) Subject: r600: Fix stack overflow X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a41f2527ae8ae5432b99c88863fbdf2f0b5f04ad;p=mesa.git 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" Reviewed-by: Nicolai Hähnle --- diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index b692e7f4a17..b80a3f8b629 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;