From 920f1970a441be1ada64ba5530a7a3f57c1d2ee0 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Thu, 27 Sep 2012 17:48:35 +0300 Subject: [PATCH] shell: Skip clients that we forked ourselves in kill binding When we fork a client and give one end of a socketpair, the credentials on the socket fd comes back as ourselves. When that happens, do not kill the process. Also remove superfluous variables. Signed-off-by: Tiago Vignatti --- src/shell.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/shell.c b/src/shell.c index e043004e..78279775 100644 --- a/src/shell.c +++ b/src/shell.c @@ -3506,15 +3506,18 @@ force_kill_binding(struct wl_seat *seat, uint32_t time, uint32_t key, struct wl_surface *focus_surface; struct wl_client *client; pid_t pid; - uid_t uid; - gid_t gid; focus_surface = seat->keyboard->focus; if (!focus_surface) return; client = focus_surface->resource.client; - wl_client_get_credentials(client, &pid, &uid, &gid); + wl_client_get_credentials(client, &pid, NULL, NULL); + + /* Skip clients that we launched ourselves (the credentials of + * the socketpair is ours) */ + if (pid == getpid()) + return; kill(pid, SIGKILL); }