aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/dix/dixutils.c
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2017-02-19 00:06:54 +0100
committerMihai Moldovan <ionic@ionic.de>2017-03-01 15:19:16 +0100
commit1d24554ff5754e294c03da0a3c5a53af8736ee2b (patch)
tree9fdfcc1cdaacae5550e7fa7e2ac870ce61aa26be /nx-X11/programs/Xserver/dix/dixutils.c
parent52c3c80d75081b91ff27cb8ab37ca943980d424d (diff)
downloadnx-libs-1d24554ff5754e294c03da0a3c5a53af8736ee2b.tar.gz
nx-libs-1d24554ff5754e294c03da0a3c5a53af8736ee2b.tar.bz2
nx-libs-1d24554ff5754e294c03da0a3c5a53af8736ee2b.zip
dix: fix incomplete commit
The following commit turned out to be incomplete. This commit makes it complete by removing client->lastDrawable/lastGC everywhere thus fixing ArcticaProject/nx-libs#306 and #322 commit e6f2f6427122dc4bc802acebf26f8cec16cd2f62 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Jun 20 16:45:38 2016 +0200 dix: remove caching of drawables and graphics contexts. The security checks simply bypass the cached values so they are unused. Backported from X.org: commit 9a183d7ba50e31afa133cc03aee7991517a283ea Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Tue Aug 14 11:39:26 2007 -0400 dix: remove caching of drawables and graphics contexts. The security checks simply bypass the cached values so they are unused. Backport to nx-libs: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
Diffstat (limited to 'nx-X11/programs/Xserver/dix/dixutils.c')
-rw-r--r--nx-X11/programs/Xserver/dix/dixutils.c45
1 files changed, 4 insertions, 41 deletions
diff --git a/nx-X11/programs/Xserver/dix/dixutils.c b/nx-X11/programs/Xserver/dix/dixutils.c
index bf925f748..3ccc90d71 100644
--- a/nx-X11/programs/Xserver/dix/dixutils.c
+++ b/nx-X11/programs/Xserver/dix/dixutils.c
@@ -210,27 +210,10 @@ CompareISOLatin1Lowered(unsigned char *s1, int s1len,
WindowPtr
SecurityLookupWindow(XID rid, ClientPtr client, Mask access_mode)
{
- WindowPtr pWin;
-
client->errorValue = rid;
if(rid == INVALID)
return NULL;
- if (client->trustLevel != XSecurityClientTrusted)
- return (WindowPtr)SecurityLookupIDByType(client, rid, RT_WINDOW, access_mode);
- if (client->lastDrawableID == rid)
- {
- if (client->lastDrawable->type == DRAWABLE_WINDOW)
- return ((WindowPtr) client->lastDrawable);
- return (WindowPtr) NULL;
- }
- pWin = (WindowPtr)SecurityLookupIDByType(client, rid, RT_WINDOW, access_mode);
- if (pWin && pWin->drawable.type == DRAWABLE_WINDOW) {
- client->lastDrawable = (DrawablePtr) pWin;
- client->lastDrawableID = rid;
- client->lastGCID = INVALID;
- client->lastGC = (GCPtr)NULL;
- }
- return pWin;
+ return (WindowPtr)SecurityLookupIDByType(client, rid, RT_WINDOW, access_mode);
}
@@ -241,15 +224,10 @@ SecurityLookupDrawable(XID rid, ClientPtr client, Mask access_mode)
if(rid == INVALID)
return (void *) NULL;
- if (client->trustLevel != XSecurityClientTrusted)
- return (DrawablePtr)SecurityLookupIDByClass(client, rid, RC_DRAWABLE,
- access_mode);
- if (client->lastDrawableID == rid)
- return ((void *) client->lastDrawable);
pDraw = (DrawablePtr)SecurityLookupIDByClass(client, rid, RC_DRAWABLE,
access_mode);
- if (pDraw && (pDraw->type != UNDRAWABLE_WINDOW))
- return (void *)pDraw;
+ if ((client->trustLevel != XSecurityClientTrusted) || (pDraw && (pDraw->type != UNDRAWABLE_WINDOW)))
+ return (void *)pDraw;
return (void *)NULL;
}
@@ -279,20 +257,7 @@ LookupWindow(XID rid, ClientPtr client)
client->errorValue = rid;
if(rid == INVALID)
return NULL;
- if (client->lastDrawableID == rid)
- {
- if (client->lastDrawable->type == DRAWABLE_WINDOW)
- return ((WindowPtr) client->lastDrawable);
- return (WindowPtr) NULL;
- }
- pWin = (WindowPtr)LookupIDByType(rid, RT_WINDOW);
- if (pWin && pWin->drawable.type == DRAWABLE_WINDOW) {
- client->lastDrawable = (DrawablePtr) pWin;
- client->lastDrawableID = rid;
- client->lastGCID = INVALID;
- client->lastGC = (GCPtr)NULL;
- }
- return pWin;
+ return (WindowPtr)LookupIDByType(rid, RT_WINDOW);
}
@@ -303,8 +268,6 @@ LookupDrawable(XID rid, ClientPtr client)
if(rid == INVALID)
return (void *) NULL;
- if (client->lastDrawableID == rid)
- return ((void *) client->lastDrawable);
pDraw = (DrawablePtr)LookupIDByClass(rid, RC_DRAWABLE);
if (pDraw && (pDraw->type != UNDRAWABLE_WINDOW))
return (void *)pDraw;