_mesa_lookup_texture_err() is not currently checking that the texture-id can be zero, but _mesa_HashLookup() doesn't expect the key to be zero, and will fail an assertion (crashing the driver on debug mode).
Considering that _mesa_lookup_texture_err() is called from _mesa_GetTextureImage and _mesa_GetTextureSubImage with user provided arguments, we must validate the texture-id before looking the texture up in the hash table. --- src/mesa/main/texobj.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index fbd498d..e5b7070 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -116,9 +116,10 @@ _mesa_lookup_texture(struct gl_context *ctx, GLuint id) struct gl_texture_object * _mesa_lookup_texture_err(struct gl_context *ctx, GLuint id, const char* func) { - struct gl_texture_object *texObj; + struct gl_texture_object *texObj = NULL; - texObj = _mesa_lookup_texture(ctx, id); /* Returns NULL if not found. */ + if (id > 0) + texObj = _mesa_lookup_texture(ctx, id); /* Returns NULL if not found. */ if (!texObj) _mesa_error(ctx, GL_INVALID_OPERATION, "%s(texture)", func); -- 2.10.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev