[PATCH xserver 1/9] xvmc: Fix unchecked AddResource
walter harms
wharms at bfs.de
Tue Mar 8 08:12:34 UTC 2016
Am 07.03.2016 23:20, schrieb Julien Cristau:
> Signed-off-by: Julien Cristau <jcristau at debian.org>
> ---
> Xext/xvmc.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/Xext/xvmc.c b/Xext/xvmc.c
> index 64eda92..7565c17 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;
> + }
> +
I do not see the whole picture but the free a few lines before indicate that
the error path may need to free other previously allocated resources.
re,
wh
> 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);
>
More information about the xorg-devel
mailing list