From ab68c707fd02613d9359120ba6402639dd8bd89e Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 3 Feb 2010 15:08:40 -0500 Subject: [PATCH] xselinux: Allow GetWindowContext to be used for pixmaps as well. Signed-off-by: Eamon Walsh Reviewed-by: Keith Packard --- Xext/xselinux_ext.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Xext/xselinux_ext.c b/Xext/xselinux_ext.c index dc27c92ed..1dff32d14 100644 --- a/Xext/xselinux_ext.c +++ b/Xext/xselinux_ext.c @@ -223,18 +223,26 @@ ProcSELinuxGetDeviceContext(ClientPtr client) static int ProcSELinuxGetWindowContext(ClientPtr client) { - WindowPtr pWin; + DrawablePtr pDraw; + PrivateRec **privatePtr; SELinuxObjectRec *obj; int rc; REQUEST(SELinuxGetContextReq); REQUEST_SIZE_MATCH(SELinuxGetContextReq); - rc = dixLookupWindow(&pWin, stuff->id, client, DixGetAttrAccess); + rc = dixLookupDrawable(&pDraw, stuff->id, client, + M_WINDOW | M_DRAWABLE_PIXMAP, + DixGetAttrAccess); if (rc != Success) return rc; - obj = dixLookupPrivate(&pWin->devPrivates, objectKey); + if (pDraw->type == M_DRAWABLE_PIXMAP) + privatePtr = &((PixmapPtr)pDraw)->devPrivates; + else + privatePtr = &((WindowPtr)pDraw)->devPrivates; + + obj = dixLookupPrivate(privatePtr, objectKey); return SELinuxSendContextReply(client, obj->sid); }