xselinux: Allow GetWindowContext to be used for pixmaps as well.

Signed-off-by: Eamon Walsh <ewalsh@tycho.nsa.gov>
Reviewed-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Eamon Walsh 2010-02-03 15:08:40 -05:00
parent eb9210097e
commit ab68c707fd

View File

@ -223,18 +223,26 @@ ProcSELinuxGetDeviceContext(ClientPtr client)
static int static int
ProcSELinuxGetWindowContext(ClientPtr client) ProcSELinuxGetWindowContext(ClientPtr client)
{ {
WindowPtr pWin; DrawablePtr pDraw;
PrivateRec **privatePtr;
SELinuxObjectRec *obj; SELinuxObjectRec *obj;
int rc; int rc;
REQUEST(SELinuxGetContextReq); REQUEST(SELinuxGetContextReq);
REQUEST_SIZE_MATCH(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) if (rc != Success)
return rc; 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); return SELinuxSendContextReply(client, obj->sid);
} }