unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Jim Porter <jporterbugs@gmail.com>
To: 51327@debbugs.gnu.org
Cc: eggert@cs.ucla.edu
Subject: bug#51327: 28.0.60; emacsclient warns about XDG_RUNTIME_DIR when starting daemon on-demand
Date: Sat, 30 Oct 2021 12:37:02 -0700	[thread overview]
Message-ID: <53706fa9-1458-fb5c-bd31-15ab555b59e9@gmail.com> (raw)
In-Reply-To: <ba5ee273-9d0f-7baf-ef2e-d0b005f29ed0@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1611 bytes --]

On 10/21/2021 9:58 PM, Jim Porter wrote:
> Normally, when running `emacsclient --alternate-editor=""' with no Emacs 
> server running, it will run `emacs --daemon' and then connect to it. In 
> Emacs 28, it will also issue the following warning:
> 
>    Should XDG_RUNTIME_DIR='/run/user/1000' be in the environment?
>    (Be careful: XDG_RUNTIME_DIR is security-related.)
> 
> However, XDG_RUNTIME_DIR *is* set in my environment, so it shouldn't be 
> warning me about it.
> 
> I believe this is due to the fix for bug#33847 (see commit 
> 007744dd0404d6febca88b00c22981cc630fb8c0). That bug asked for 
> emacsclient to look in both XDG_RUNTIME_DIR and TMPDIR to find the 
> server socket, in order to accommodate the case where `emacs --daemon' 
> is started when XDG_RUNTIME_DIR is unset, but *is* set when running 
> `emacsclient'.

Attached is a patch that should fix this by skipping the TMPDIR check 
whenever a) we have an alternate editor and b) XDG_RUNTIME_DIR is set. 
This has the benefit of supporting the use case in bug#33847 as well as 
users who start the Emacs daemon on-demand.

The only flaw I can think of with this method is that it would still be 
technically possible to perform a symlink attack against a user who runs 
`emacs --daemon' explicitly with XDG_RUNTIME_DIR set, and then runs 
`emacsclient' without an alternate editor set. However, this would 
require the attacker to be able to kill the `emacs --daemon' process 
somehow so that emacsclient falls back to looking in TMPDIR. I'm not 
sure that's a realistic attack vector, but I thought I'd mention it for 
completeness.

[-- Attachment #2: 0001-Prevent-symlink-attacks-in-emacsclient-when-an-alter.patch --]
[-- Type: text/plain, Size: 1148 bytes --]

From 6b8c7a9881b79254c618356a4dfa257812a6fe5c Mon Sep 17 00:00:00 2001
From: Jim Porter <jporterbugs@gmail.com>
Date: Sat, 30 Oct 2021 12:22:02 -0700
Subject: [PATCH] Prevent symlink attacks in emacsclient when an alternate
 editor is set

* lib-src/emacsclient.c (set_local_socket): Don't look in TMPDIR for a
socket if we have an alternate editor and XDG_RUNTIME_DIR is set
(Bug#51327).
---
 lib-src/emacsclient.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index cff3cec2a7..1305226056 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -1466,7 +1466,10 @@ set_local_socket (char const *server_name)
 			 ? connect_socket (AT_FDCWD, sockname, s, 0)
 			 : ENAMETOOLONG);
 	}
-      if (sock_status == ENOENT)
+      /* Fall back to checking for a socket in TMPDIR unless we have
+	 an alternate editor and XDG_RUNTIME_DIR is set.  In that
+	 case, we want to bail out and spawn the alternate editor. */
+      if (!(xdg_runtime_dir && alternate_editor) && sock_status == ENOENT)
 	{
 	  char const *tmpdir = egetenv ("TMPDIR");
 	  if (tmpdir)
-- 
2.25.1


  reply	other threads:[~2021-10-30 19:37 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-22  4:58 bug#51327: 28.0.60; emacsclient warns about XDG_RUNTIME_DIR when starting daemon on-demand Jim Porter
2021-10-30 19:37 ` Jim Porter [this message]
2021-10-30 22:33   ` Paul Eggert
2021-12-07 11:26     ` Stefan Kangas
2021-12-07 14:27       ` Eli Zaretskii
2021-12-07 14:58         ` Stefan Kangas
2021-12-07 19:03           ` Paul Eggert
2021-12-08  6:57             ` Jim Porter
2021-12-08 19:06               ` Paul Eggert
2021-12-08 19:16                 ` Eli Zaretskii
2021-12-08 20:23                   ` Stefan Kangas
2021-12-08 21:56                     ` Ulrich Mueller
2021-12-08 22:56                       ` Jim Porter
2021-12-08 23:44                       ` Paul Eggert
2021-12-09  0:19                         ` Ulrich Mueller
2021-12-09  7:32                       ` Eli Zaretskii
2021-12-09  7:44                         ` Ulrich Mueller
2021-12-09 17:12                           ` Paul Eggert
2021-12-09 18:34                             ` Eli Zaretskii
2021-12-09 19:45                               ` Jim Porter
2021-12-09 19:48                               ` Paul Eggert
2021-12-09 19:57                                 ` Eli Zaretskii
2021-12-09 20:04                                   ` Paul Eggert
2022-09-10  5:01                                     ` Lars Ingebrigtsen
2022-09-10  5:53                                       ` Paul Eggert via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-12-09  4:10             ` Richard Stallman
2021-11-05 10:38 ` bug#51327: 28.0.60; emacsclient warns about XDG_RUNTIME_DIR when starting daemon on demand Ulrich Mueller
2021-11-05 17:54   ` Jim Porter
2021-11-05 18:05     ` Ulrich Mueller
2021-11-05 18:38       ` Jim Porter
2021-11-05 19:02         ` Ulrich Mueller
2021-11-11 13:04           ` Ulrich Mueller
2021-11-11 17:06             ` Jim Porter
2021-11-12  2:21               ` Paul Eggert
2021-12-07 14:58   ` Stefan Kangas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53706fa9-1458-fb5c-bd31-15ab555b59e9@gmail.com \
    --to=jporterbugs@gmail.com \
    --cc=51327@debbugs.gnu.org \
    --cc=eggert@cs.ucla.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).