Mesa (master): r600g: increase array size for shader inputs and outputs
Marek Olšák
mareko at kemper.freedesktop.org
Fri May 10 01:23:41 UTC 2013
Module: Mesa
Branch: master
Commit: da33f9b919039442e9ab51f9b1d1c83a73607133
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=da33f9b919039442e9ab51f9b1d1c83a73607133
Author: Marek Olšák <maraeo at gmail.com>
Date: Thu May 2 05:08:08 2013 +0200
r600g: increase array size for shader inputs and outputs
and add assertions to prevent buffer overflow. This fixes corruption
of the r600_shader struct.
NOTE: This is a candidate for the stable branches.
---
src/gallium/drivers/r600/r600_shader.c | 2 ++
src/gallium/drivers/r600/r600_shader.h | 4 ++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 78266c0..4416ef0 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -571,6 +571,7 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx)
switch (d->Declaration.File) {
case TGSI_FILE_INPUT:
i = ctx->shader->ninput;
+ assert(i < Elements(ctx->shader->input));
ctx->shader->ninput += count;
ctx->shader->input[i].name = d->Semantic.Name;
ctx->shader->input[i].sid = d->Semantic.Index;
@@ -602,6 +603,7 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx)
break;
case TGSI_FILE_OUTPUT:
i = ctx->shader->noutput++;
+ assert(i < Elements(ctx->shader->output));
ctx->shader->output[i].name = d->Semantic.Name;
ctx->shader->output[i].sid = d->Semantic.Index;
ctx->shader->output[i].gpr = ctx->file_offset[TGSI_FILE_OUTPUT] + d->Range.First;
diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
index 411667a..d989ce4 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -45,8 +45,8 @@ struct r600_shader {
unsigned ninput;
unsigned noutput;
unsigned nlds;
- struct r600_shader_io input[32];
- struct r600_shader_io output[32];
+ struct r600_shader_io input[40];
+ struct r600_shader_io output[40];
boolean uses_kill;
boolean fs_write_all;
boolean two_side;
More information about the mesa-commit
mailing list