From 9c2c485df9fd39ae36779f765a892e36835a8001 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 1 Dec 2014 14:26:46 +0000 Subject: [PATCH] sna: Validate that the reg/insn size is well defined Signed-off-by: Chris Wilson --- src/sna/brw/brw_eu_emit.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/sna/brw/brw_eu_emit.c b/src/sna/brw/brw_eu_emit.c index 5c0b3065..00c984d9 100644 --- a/src/sna/brw/brw_eu_emit.c +++ b/src/sna/brw/brw_eu_emit.c @@ -34,6 +34,8 @@ #include #include +#define ARRAY_SIZE(A) (sizeof(A)/sizeof(A[0])) + /*********************************************************************** * Internal helper for constructing instructions */ @@ -179,6 +181,11 @@ validate_reg(struct brw_instruction *insn, struct brw_reg reg) reg.file == BRW_ARF_NULL) return; + assert(reg.hstride >= 0 && reg.hstride < ARRAY_SIZE(hstride_for_reg)); + assert(reg.vstride >= 0 && reg.vstride < ARRAY_SIZE(vstride_for_reg)); + assert(reg.width >= 0 && reg.width < ARRAY_SIZE(width_for_reg)); + assert(insn->header.execution_size >= 0 && insn->header.execution_size < ARRAY_SIZE(execsize_for_reg)); + hstride = hstride_for_reg[reg.hstride]; if (reg.vstride == 0xf) {