[virglrenderer-devel] [PATCH virglrenderer] vrend: fix VREND_MAX_CTX checks
marcandre.lureau at redhat.com
marcandre.lureau at redhat.com
Wed Feb 17 21:59:57 UTC 2016
From: Marc-André Lureau <marcandre.lureau at redhat.com>
Context array is declared as dec_ctx[VREND_MAX_CTX], virgl shouldn't accept id
== VREND_MAX_CTX.
Found thanks to AddressSanitizer.
Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
---
src/vrend_decode.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/vrend_decode.c b/src/vrend_decode.c
index c77b3c5..96b60f4 100644
--- a/src/vrend_decode.c
+++ b/src/vrend_decode.c
@@ -1040,7 +1040,7 @@ void vrend_renderer_context_create_internal(uint32_t handle, uint32_t nlen,
{
struct vrend_decode_ctx *dctx;
- if (handle > VREND_MAX_CTX)
+ if (handle >= VREND_MAX_CTX)
return;
dctx = malloc(sizeof(struct vrend_decode_ctx));
@@ -1060,8 +1060,9 @@ void vrend_renderer_context_create_internal(uint32_t handle, uint32_t nlen,
int vrend_renderer_context_create(uint32_t handle, uint32_t nlen, const char *debug_name)
{
- if (handle > VREND_MAX_CTX)
+ if (handle >= VREND_MAX_CTX)
return EINVAL;
+
/* context 0 is always available with no guarantees */
if (handle == 0)
return EINVAL;
@@ -1075,7 +1076,7 @@ void vrend_renderer_context_destroy(uint32_t handle)
struct vrend_decode_ctx *ctx;
bool ret;
- if (handle > VREND_MAX_CTX)
+ if (handle >= VREND_MAX_CTX)
return;
ctx = dec_ctx[handle];
@@ -1091,7 +1092,7 @@ void vrend_renderer_context_destroy(uint32_t handle)
struct vrend_context *vrend_lookup_renderer_ctx(uint32_t ctx_id)
{
- if (ctx_id > VREND_MAX_CTX)
+ if (ctx_id >= VREND_MAX_CTX)
return NULL;
if (dec_ctx[ctx_id] == NULL)
@@ -1105,7 +1106,7 @@ int vrend_decode_block(uint32_t ctx_id, uint32_t *block, int ndw)
struct vrend_decode_ctx *gdctx;
bool bret;
int ret;
- if (ctx_id > VREND_MAX_CTX)
+ if (ctx_id >= VREND_MAX_CTX)
return EINVAL;
if (dec_ctx[ctx_id] == NULL)
--
2.5.0
More information about the virglrenderer-devel
mailing list