summaryrefslogtreecommitdiff
path: root/Xext/xvmc.c
diff options
context:
space:
mode:
authorJulien Cristau <jcristau@debian.org>2016-03-07 23:20:26 +0100
committerAdam Jackson <ajax@redhat.com>2016-03-08 10:19:33 -0500
commit119d5c0e2f800737c949ef760c5fe25d963200bf (patch)
tree9fdb3f85078e709710519fecc381667ba78d02a5 /Xext/xvmc.c
parenta2c3c34b44b866440a152511e682c98879ee13b7 (diff)
xvmc: Fix unchecked AddResource
Reviewed-by: RĂ©mi Cardona <remi@gentoo.org> Signed-off-by: Julien Cristau <jcristau@debian.org>
Diffstat (limited to 'Xext/xvmc.c')
-rw-r--r--Xext/xvmc.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/Xext/xvmc.c b/Xext/xvmc.c
index 64eda922b..7565c173d 100644
--- a/Xext/xvmc.c
+++ b/Xext/xvmc.c
@@ -253,6 +253,10 @@ ProcXvMCCreateContext(ClientPtr client)
free(pContext);
return result;
}
+ if (!AddResource(pContext->context_id, XvMCRTContext, pContext)) {
+ free(data);
+ return BadAlloc;
+ }
rep = (xvmcCreateContextReply) {
.type = X_Reply,
@@ -266,7 +270,6 @@ ProcXvMCCreateContext(ClientPtr client)
WriteToClient(client, sizeof(xvmcCreateContextReply), &rep);
if (dwords)
WriteToClient(client, dwords << 2, data);
- AddResource(pContext->context_id, XvMCRTContext, pContext);
free(data);
@@ -329,6 +332,11 @@ ProcXvMCCreateSurface(ClientPtr client)
free(pSurface);
return result;
}
+ if (!AddResource(pSurface->surface_id, XvMCRTSurface, pSurface)) {
+ free(data);
+ return BadAlloc;
+ }
+
rep = (xvmcCreateSurfaceReply) {
.type = X_Reply,
.sequenceNumber = client->sequence,
@@ -338,7 +346,6 @@ ProcXvMCCreateSurface(ClientPtr client)
WriteToClient(client, sizeof(xvmcCreateSurfaceReply), &rep);
if (dwords)
WriteToClient(client, dwords << 2, data);
- AddResource(pSurface->surface_id, XvMCRTSurface, pSurface);
free(data);
@@ -445,6 +452,11 @@ ProcXvMCCreateSubpicture(ClientPtr client)
free(pSubpicture);
return result;
}
+ if (!AddResource(pSubpicture->subpicture_id, XvMCRTSubpicture, pSubpicture)) {
+ free(data);
+ return BadAlloc;
+ }
+
rep = (xvmcCreateSubpictureReply) {
.type = X_Reply,
.sequenceNumber = client->sequence,
@@ -462,7 +474,6 @@ ProcXvMCCreateSubpicture(ClientPtr client)
WriteToClient(client, sizeof(xvmcCreateSubpictureReply), &rep);
if (dwords)
WriteToClient(client, dwords << 2, data);
- AddResource(pSubpicture->subpicture_id, XvMCRTSubpicture, pSubpicture);
free(data);