summaryrefslogtreecommitdiffstats
path: root/src/glx/dri2_glx.c
diff options
context:
space:
mode:
authorTomasz Lis <[email protected]>2013-07-18 14:19:38 -0700
committerIan Romanick <[email protected]>2013-07-18 16:03:42 -0700
commit2eed9ff2fb5b218b7b274d2989b0dbbe5fcfedef (patch)
treec3b7db63922ed8d7d51783b27f240cad3045c46f /src/glx/dri2_glx.c
parent27c8aa5cfbcf6f2ad21564dfcdabbe747c277cab (diff)
glx: Validate the GLX_RENDER_TYPE value
Correctly handle the value of renderType in GLX context. In case of the value being incorrect, context creation fails. v2 (idr): indirect_create_context is just a memory allocator, so don't validate the GLX_RENDER_TYPE there. Fixes regressions in several GLX_ARB_create_context piglit tests. Signed-off-by: Tomasz Lis <[email protected]> Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/glx/dri2_glx.c')
-rw-r--r--src/glx/dri2_glx.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 9581bff02dc..c54edacab5b 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -205,6 +205,10 @@ dri2_create_context(struct glx_screen *base,
__GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) config_base;
__DRIcontext *shared = NULL;
+ /* Check the renderType value */
+ if (!validate_renderType_against_config(config_base, renderType))
+ return NULL;
+
if (shareList) {
/* If the shareList context is not a DRI2 context, we cannot possibly
* create a DRI2 context that shares it.
@@ -277,6 +281,10 @@ dri2_create_context_attribs(struct glx_screen *base,
&api, &reset, error))
goto error_exit;
+ /* Check the renderType value */
+ if (!validate_renderType_against_config(config_base, renderType))
+ goto error_exit;
+
if (shareList) {
pcp_shared = (struct dri2_context *) shareList;
shared = pcp_shared->driContext;