|
Peter Hutterer |
a035615 |
From 66a3b14e118e90db80f96fcab52af4df35bc2377 Mon Sep 17 00:00:00 2001
|
|
|
4edb4ea |
From: Adam Jackson <ajax@redhat.com>
|
|
|
4edb4ea |
Date: Mon, 10 Dec 2007 11:26:57 -0500
|
|
Peter Hutterer |
77cc640 |
Subject: [PATCH] Hack for proper MIT-SHM rejection for ssh-forwarded clients.
|
|
|
4edb4ea |
|
|
|
4edb4ea |
---
|
|
|
c22de5d |
Xext/shm.c | 16 ++++++++++++++++
|
|
Peter Hutterer |
a035615 |
1 file changed, 16 insertions(+)
|
|
|
4edb4ea |
|
|
|
4edb4ea |
diff --git a/Xext/shm.c b/Xext/shm.c
|
|
Peter Hutterer |
a035615 |
index de48020..c011210 100644
|
|
|
4edb4ea |
--- a/Xext/shm.c
|
|
|
4edb4ea |
+++ b/Xext/shm.c
|
|
Peter Hutterer |
a035615 |
@@ -321,8 +321,21 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly)
|
|
|
4edb4ea |
mode_t mask;
|
|
|
4edb4ea |
int uidset = 0, gidset = 0;
|
|
|
4edb4ea |
LocalClientCredRec *lcc;
|
|
|
4edb4ea |
+ Bool is_ssh = FALSE;
|
|
Peter Hutterer |
a035615 |
|
|
|
4edb4ea |
if (GetLocalClientCreds(client, &lcc) != -1) {
|
|
|
4edb4ea |
+#ifdef linux
|
|
|
4edb4ea |
+ if (lcc->fieldsSet & LCC_PID_SET) {
|
|
|
4edb4ea |
+ /* ssh isn't actually a local client */
|
|
|
4edb4ea |
+ char exe[64], buf[64];
|
|
|
4edb4ea |
+
|
|
|
73fc924 |
+ memset(buf, 0, 64);
|
|
|
4edb4ea |
+ snprintf(exe, 64, "/proc/%d/exe", lcc->pid);
|
|
|
73fc924 |
+ readlink(exe, buf, 63);
|
|
|
4edb4ea |
+ if (strstr(buf, "/ssh"))
|
|
|
4edb4ea |
+ is_ssh = TRUE;
|
|
|
4edb4ea |
+ }
|
|
|
4edb4ea |
+#endif
|
|
|
4edb4ea |
|
|
Peter Hutterer |
a035615 |
if (lcc->fieldsSet & LCC_UID_SET) {
|
|
Peter Hutterer |
a035615 |
uid = lcc->euid;
|
|
Peter Hutterer |
a035615 |
@@ -342,6 +355,9 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly)
|
|
|
4edb4ea |
#endif
|
|
Peter Hutterer |
a035615 |
FreeLocalClientCreds(lcc);
|
|
Peter Hutterer |
a035615 |
|
|
Peter Hutterer |
a035615 |
+ if (is_ssh)
|
|
Peter Hutterer |
a035615 |
+ return -1;
|
|
|
4edb4ea |
+
|
|
Peter Hutterer |
a035615 |
if (uidset) {
|
|
Peter Hutterer |
a035615 |
/* User id 0 always gets access */
|
|
Peter Hutterer |
a035615 |
if (uid == 0) {
|
|
|
4edb4ea |
--
|
|
Peter Hutterer |
a035615 |
1.7.10.1
|
|
|
4edb4ea |
|