[virglrenderer-devel] [PATCH] gallium/tgsi: fix oob access in parse instruction

Marc-André Lureau mlureau at redhat.com
Mon Jan 23 08:17:53 UTC 2017


Hi

----- Original Message -----
> When parsing texture instruction, it doesn't stop if the
> 'cur' is ',', the loop variable 'i' will also be increased
> and be used to index the 'inst.TexOffsets' array. This can lead
> an oob access issue. This patch avoid this.
> 
> Signed-off-by: Li Qiang <liq3ea at gmail.com>
> ---
>  src/gallium/auxiliary/tgsi/tgsi_text.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c
> b/src/gallium/auxiliary/tgsi/tgsi_text.c
> index 308e6b5..4ed9050 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_text.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
> @@ -1163,7 +1163,7 @@ parse_instruction(
>  
>     cur = ctx->cur;
>     eat_opt_white( &cur );
> -   for (i = 0; inst.Instruction.Texture && *cur == ','; i++) {
> +   for (i = 0; inst.Instruction.Texture && *cur == ',' && i <
> TGSI_FULL_MAX_TEX_OFFSETS; i++) {
>           cur++;
>           eat_opt_white( &cur );
>           ctx->cur = cur;

Shoundn't it report_error() and return FALSE in this case?


More information about the virglrenderer-devel mailing list