<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2017-01-23 16:17 GMT+08:00 Marc-André Lureau <span dir="ltr"><<a href="mailto:mlureau@redhat.com" target="_blank">mlureau@redhat.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi<br>
<span class="gmail-"><br>
----- Original Message -----<br>
> When parsing texture instruction, it doesn't stop if the<br>
> 'cur' is ',', the loop variable 'i' will also be increased<br>
> and be used to index the 'inst.TexOffsets' array. This can lead<br>
> an oob access issue. This patch avoid this.<br>
><br>
> Signed-off-by: Li Qiang <<a href="mailto:liq3ea@gmail.com">liq3ea@gmail.com</a>><br>
> ---<br>
>  src/gallium/auxiliary/tgsi/<wbr>tgsi_text.c | 2 +-<br>
>  1 file changed, 1 insertion(+), 1 deletion(-)<br>
><br>
> diff --git a/src/gallium/auxiliary/tgsi/<wbr>tgsi_text.c<br>
> b/src/gallium/auxiliary/tgsi/<wbr>tgsi_text.c<br>
> index 308e6b5..4ed9050 100644<br>
> --- a/src/gallium/auxiliary/tgsi/<wbr>tgsi_text.c<br>
> +++ b/src/gallium/auxiliary/tgsi/<wbr>tgsi_text.c<br>
> @@ -1163,7 +1163,7 @@ parse_instruction(<br>
><br>
>     cur = ctx->cur;<br>
>     eat_opt_white( &cur );<br>
> -   for (i = 0; inst.Instruction.Texture && *cur == ','; i++) {<br>
> +   for (i = 0; inst.Instruction.Texture && *cur == ',' && i <<br>
> TGSI_FULL_MAX_TEX_OFFSETS; i++) {<br>
>           cur++;<br>
>           eat_opt_white( &cur );<br>
>           ctx->cur = cur;<br>
<br>
</span>Shoundn't it report_error() and return FALSE in this case?<br>
</blockquote></div><br></div><div class="gmail_extra">I think there is no need for report_error().</div><div class="gmail_extra"><br></div><div class="gmail_extra">IIUC The guest can provide TGSI_FULL_MAX_TEX_OFFSETS of TexOffset.</div><div class="gmail_extra">If the guest construct more than this, in the next parsing, it will fail and this time it report_error and return FALSE.</div><div class="gmail_extra"><br></div><div class="gmail_extra">So I think we can just limit the loop count here.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Thanks.</div></div>