From dd80156bf05c9eb4000d0981e00d0d9fb69a94f6 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Wed, 7 Dec 2011 22:58:45 -0800 Subject: [PATCH 1/4] Include client name if available in PrintDeviceGrabInfo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also adds missing newline to first line of output. Before patch: [3581472.414] (II) Printing all currently active device grabs: [3581472.414] Active grab 0x1800000 (core) on device 'Virtual core pointer' (2): client pid 26174 uid 0 gid 10 [3581472.415] at 3581469139 (from active grab) (device thawed, state 1) [3581472.415] core event mask 0x0 [3581472.415] owner-events true, kb 1 ptr 1, confine 0, cursor 0x0 [3581472.415] Active grab 0x1800000 (core) on device 'Virtual core keyboard' (3) : client pid 26174 uid 0 gid 10 [3581472.415] at 3581469139 (from active grab) (device thawed, state 1) [3581472.415] core event mask 0x3 [3581472.415] owner-events true, kb 1 ptr 1, confine 0, cursor 0x0 [3581472.415] (II) End list of active device grabs After patch: [3581736.601] (II) Printing all currently active device grabs: [3581736.601] Active grab 0x1600000 (core) on device 'Virtual core pointer' (2): [3581736.601] client pid 26741 /usr/bin/xscreensaver -nosplash [3581736.601] at 3581735000 (from active grab) (device thawed, state 1) [3581736.601] core event mask 0x0 [3581736.601] owner-events true, kb 1 ptr 1, confine 0, cursor 0x0 [3581736.601] Active grab 0x1600000 (core) on device 'Virtual core keyboard' (3) : [3581736.601] client pid 26741 /usr/bin/xscreensaver -nosplash [3581736.601] at 3581735000 (from active grab) (device thawed, state 1) [3581736.601] core event mask 0x3 [3581736.601] owner-events true, kb 1 ptr 1, confine 0, cursor 0x0 [3581736.601] (II) End list of active device grabs Signed-off-by: Alan Coopersmith Reviewed-by: Rami Ylimäki --- dix/grabs.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/dix/grabs.c b/dix/grabs.c index aced130a7..3286eb77d 100644 --- a/dix/grabs.c +++ b/dix/grabs.c @@ -61,6 +61,7 @@ SOFTWARE. #include "xace.h" #include "exevents.h" #include "inpututils.h" +#include "client.h" #define BITMASK(i) (((Mask)1) << ((i) & 31)) #define MASKIDX(i) ((i) >> 5) @@ -77,25 +78,41 @@ PrintDeviceGrabInfo(DeviceIntPtr dev) int i, j; GrabInfoPtr devGrab = &dev->deviceGrab; GrabPtr grab = devGrab->grab; + Bool clientIdPrinted = FALSE; - ErrorF("Active grab 0x%lx (%s) on device '%s' (%d):", + ErrorF("Active grab 0x%lx (%s) on device '%s' (%d):\n", (unsigned long) grab->resource, (grab->grabtype == GRABTYPE_XI2) ? "xi2" : ((grab->grabtype == GRABTYPE_CORE) ? "core" : "xi1"), dev->name, dev->id); client = clients[CLIENT_ID(grab->resource)]; - if (client && GetLocalClientCreds(client, &lcc) != -1) + if (client) { - ErrorF(" client pid %ld uid %ld gid %ld\n", - (lcc->fieldsSet & LCC_PID_SET) ? (long) lcc->pid : 0, - (lcc->fieldsSet & LCC_UID_SET) ? (long) lcc->euid : 0, - (lcc->fieldsSet & LCC_GID_SET) ? (long) lcc->egid : 0); - FreeLocalClientCreds(lcc); + pid_t clientpid = GetClientPid(client); + const char *cmdname = GetClientCmdName(client); + const char *cmdargs = GetClientCmdArgs(client); + + if ((clientpid > 0) && (cmdname != NULL)) + { + ErrorF(" client pid %ld %s %s\n", + (long) clientpid, cmdname, cmdargs ? cmdargs : ""); + clientIdPrinted = TRUE; + } + else if (GetLocalClientCreds(client, &lcc) != -1) + { + ErrorF(" client pid %ld uid %ld gid %ld\n", + (lcc->fieldsSet & LCC_PID_SET) ? (long) lcc->pid : 0, + (lcc->fieldsSet & LCC_UID_SET) ? (long) lcc->euid : 0, + (lcc->fieldsSet & LCC_GID_SET) ? (long) lcc->egid : 0); + FreeLocalClientCreds(lcc); + clientIdPrinted = TRUE; + } } - else + if (!clientIdPrinted) { - ErrorF(" (no client information available)\n"); + ErrorF(" (no client information available for client %d)\n", + CLIENT_ID(grab->resource)); } /* XXX is this even correct? */ From 99dfe9b1de09cb481e95bd4c45dcf7493480798b Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 12 Dec 2011 16:49:32 -0800 Subject: [PATCH 2/4] Fix deconstifying cast warning in xi2_get_type Since we're just comparing values in the struct, cast it to a const xGenericEvent * to clear gcc warning of: events.c: In function 'xi2_get_type': events.c:193:5: warning: cast discards qualifiers from pointer target type Signed-off-by: Alan Coopersmith Reviewed-by: Jamey Sharp Reviewed-by: Peter Hutterer --- dix/events.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dix/events.c b/dix/events.c index 59caa918f..5c0f9ddaf 100644 --- a/dix/events.c +++ b/dix/events.c @@ -190,7 +190,7 @@ core_get_type(const xEvent *event) static inline int xi2_get_type(const xEvent *event) { - xGenericEvent* e = (xGenericEvent*)event; + const xGenericEvent* e = (const xGenericEvent*)event; return (e->type != GenericEvent || e->extension != IReqCode) ? 0 : e->evtype; } From 79d09647d878e66721a778979a9eb1f4bba5f8d6 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 12 Dec 2011 16:49:33 -0800 Subject: [PATCH 3/4] Use const cast in BitIsOn macro to avoid angering gcc Fixes gcc warnings such as: inpututils.c: In function 'valuator_mask_isset': inpututils.c:498:5: warning: cast discards qualifiers from pointer target type inpututils.c: In function 'CountBits': inpututils.c:613:9: warning: cast discards qualifiers from pointer target type Signed-off-by: Alan Coopersmith Reviewed-by: Jamey Sharp Reviewed-by: Peter Hutterer --- include/inputstr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/inputstr.h b/include/inputstr.h index 5634f3cfc..6af7264c3 100644 --- a/include/inputstr.h +++ b/include/inputstr.h @@ -57,7 +57,7 @@ SOFTWARE. #include "geext.h" #include "privates.h" -#define BitIsOn(ptr, bit) (!!(((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))) +#define BitIsOn(ptr, bit) (!!(((const BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))) #define SetBit(ptr, bit) (((BYTE *) (ptr))[(bit)>>3] |= (1 << ((bit) & 7))) #define ClearBit(ptr, bit) (((BYTE *)(ptr))[(bit)>>3] &= ~(1 << ((bit) & 7))) extern _X_EXPORT int CountBits(const uint8_t *mask, int len); From 898d97672907a8074031d0d1038cd44bb5caf40d Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 12 Dec 2011 16:49:33 -0800 Subject: [PATCH 4/4] verify_internal_event: preserve constness of data pointer All we're using it for is ErrorF calls, so make it a const char * to stop gcc from warning: inpututils.c: In function 'verify_internal_event': inpututils.c:629:9: warning: cast discards qualifiers from pointer target type Signed-off-by: Alan Coopersmith Reviewed-by: Jamey Sharp Reviewed-by: Peter Hutterer --- dix/inpututils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dix/inpututils.c b/dix/inpututils.c index 60f9fa0a8..5e2ab87f9 100644 --- a/dix/inpututils.c +++ b/dix/inpututils.c @@ -626,7 +626,7 @@ void verify_internal_event(const InternalEvent *ev) if (ev && ev->any.header != ET_Internal) { int i; - unsigned char *data = (unsigned char*)ev; + const unsigned char *data = (const unsigned char*)ev; ErrorF("dix: invalid event type %d\n", ev->any.header);