From: Marek Olšák Date: Thu, 19 Mar 2015 11:14:08 +0000 (+0100) Subject: gallium/radeon: don't crash when getting out-of-bounds TEMP references X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ecc7f2ed910345c4dd0d02ac9c72d69f10ac5572;p=mesa.git gallium/radeon: don't crash when getting out-of-bounds TEMP references Reviewed-by: Tom Stellard --- diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c index 18afbcb0a2e..20e506b7c5e 100644 --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c @@ -191,6 +191,8 @@ emit_fetch( break; case TGSI_FILE_TEMPORARY: + if (reg->Register.Index >= ctx->temps_count) + return LLVMGetUndef(tgsi2llvmtype(bld_base, type)); if (uses_temp_indirect_addressing(bld_base)) { ptr = lp_get_temp_ptr_soa(bld, reg->Register.Index, swizzle); break; @@ -395,6 +397,8 @@ emit_store( break; case TGSI_FILE_TEMPORARY: + if (range.First + i >= ctx->temps_count) + continue; if (uses_temp_indirect_addressing(bld_base)) temp_ptr = lp_get_temp_ptr_soa(bld, i + range.First, chan_index); else @@ -416,6 +420,8 @@ emit_store( break; case TGSI_FILE_TEMPORARY: + if (reg->Register.Index >= ctx->temps_count) + continue; if (uses_temp_indirect_addressing(bld_base)) { temp_ptr = NULL; break;