diff --git a/src/mesa/main/draw.c b/src/mesa/main/draw.c index 15cef9e675c..0e2072bb318 100644 --- a/src/mesa/main/draw.c +++ b/src/mesa/main/draw.c @@ -1772,8 +1772,15 @@ _mesa_validated_drawrangeelements(struct gl_context *ctx, GLenum mode, info.index.user = indices; draw.start = 0; } else { + uintptr_t start = (uintptr_t) indices; + if (unlikely(index_bo->Size < start)) { + _mesa_warning(ctx, "Invalid indices offset 0x%" PRIxPTR + " (indices buffer size is %ld bytes)." + " Draw skipped.", start, index_bo->Size); + return; + } info.index.gl_bo = index_bo; - draw.start = (uintptr_t)indices >> index_size_shift; + draw.start = start >> index_size_shift; } draw.index_bias = basevertex;