unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#37445: 27.0.50; Permission denied after make install
@ 2019-09-18  9:02 Tino Calancha
  2019-09-18 19:12 ` Paul Eggert
  2019-09-19  6:57 ` Paul Eggert
  0 siblings, 2 replies; 14+ messages in thread
From: Tino Calancha @ 2019-09-18  9:02 UTC (permalink / raw)
  To: 37445; +Cc: paul eggert

X-Debbugs-Cc: Paul Eggert <eggert@cs.ucla.edu>

I get a permission denied error
after commit 9dc306b1db08196684d05a474148e16305adbad0

The following steps reproduce the error (you need 2 users to test it)

# Install Emacs w/ the first user
$ whoami
ec2-user
$ cd ~/soft/emacs-master
$ make && sudo make install
# Launch Emasc w/ the second user
$ su user_foo
$ cd
$ emacs
emacs: Reading symbolic link: Permission denied, /home/ec2-user/soft


In GNU Emacs 27.0.50 (build 8, x86_64-pc-linux-gnu)
  of 2019-09-18 built
Repository revision: 9dc306b1db08196684d05a474148e16305adbad0
Repository branch: master
System Description: Amazon Linux 2

Recent messages:
For information about GNU Emacs and the GNU system, type C-? C-a.
C-x C-g is undefined
Omitting...
(Nothing to omit)
Omitting...
Omitted 2 lines.
Collecting branch info...done
Pull from remote repository 'origin'? (y or n) y
Collecting branch info...done
git pull origin done!

Configured using:
  'configure --with-libxml2'

Configured features:
SOUND NOTIFY INOTIFY LIBSELINUX GNUTLS LIBXML2 ZLIB THREADS PDUMPER GMP

Important settings:
   value of $LANG: en_US.UTF-8
   locale-coding-system: utf-8-unix

Major mode: Gited

Minor modes in effect:
   shell-dirtrack-mode: t
   display-time-mode: t
   winner-mode: t
   simpleclip-mode: t
   show-paren-mode: t
   minibuffer-depth-indicate-mode: t
   gited-hide-details-mode: t
   tooltip-mode: t
   global-eldoc-mode: t
   electric-indent-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   buffer-read-only: t
   line-number-mode: t
   transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug shell mule-util cl-extra term/xterm
xterm server manoj-dark-theme time smtpmail sendmail bookmark+
bookmark+-key bookmark+-1 gnus-sum url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util mailcap shr image
svg dom gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int
gnus-range message rmc puny rfc822 mml mml-sec epa derived epg
epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win bookmark+-bmu org-element avl-tree
generator help-mode org advice org-macro org-footnote org-pcomplete
pcomplete org-list org-faces org-entities noutline outline org-version
ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp
ob-comint ob-core ob-eval org-compat org-macs org-loaddefs format-spec
cal-menu calendar cal-loaddefs bookmark+-lit bookmark+-mac bookmark pp
misc emacs-lock winner xml git-handlers pcase ibuf-macs dired-x
dired-aux usl rect ibuffer ibuffer-loaddefs thingatpt simpleclip edmacro
kmacro cl paren mb-depth grep compile comint regexp-opt ansi-color ring
gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
text-property-search time-date mail-utils mm-util mail-prsvr wid-edit
cus-start cus-load gited find-func vc-git diff-mode easy-mmode dired
dired-loaddefs gited-ci finder-inf info tool-bar package easymenu
browse-url url-handlers url-parse auth-source cl-seq eieio eieio-core
cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq
byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type tabulated-list
replace newcomment text-mode elisp-mode lisp-mode prog-mode register
page menu-bar rfn-eshadow isearch timer select mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads inotify
multi-tty make-network-process emacs)

Memory information:
((conses 16 290467 26391)
  (symbols 48 24391 2)
  (strings 32 75778 2373)
  (string-bytes 1 2664995)
  (vectors 16 29579)
  (vector-slots 8 317353 13828)
  (floats 8 235 339)
  (intervals 56 616 91)
  (buffers 992 15))





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-18  9:02 bug#37445: 27.0.50; Permission denied after make install Tino Calancha
@ 2019-09-18 19:12 ` Paul Eggert
  2019-09-19  6:57 ` Paul Eggert
  1 sibling, 0 replies; 14+ messages in thread
From: Paul Eggert @ 2019-09-18 19:12 UTC (permalink / raw)
  To: Tino Calancha, 37445

On 9/18/19 2:02 AM, Tino Calancha wrote:

> # Install Emacs w/ the first user
> $ whoami
> ec2-user
> $ cd ~/soft/emacs-master
> $ make && sudo make install
> # Launch Emasc w/ the second user
> $ su user_foo
> $ cd
> $ emacs
> emacs: Reading symbolic link: Permission denied, /home/ec2-user/soft

This appears to be a configuration error in how Emacs master starts up. 
Apparently if you build Emacs in (say) /tmp/foo and then install Emacs, the 
Emacs you install consults files in /tmp/foo during startup. After you remove 
/tmp/foo, someone else can create a /tmp/foo and hijack anybody who starts up 
the installed Emacs.

I papered over the problem with commit 2019-09-18T11:21:19Z!eggert@cs.ucla.edu 
(735940f4551a43f3b4381105dc074cd7d494f2f3), which suppresses the diagnostic and 
let Emacs continue to run. However, the configuration error remains and I will 
try to squeeze free time to look at it.

I should be able to reproduce the original problem by compiling with 
-DPICKY_EACCES. That is, the idea is to use -DPICKY_EACCES to debug longstanding 
bugs in Emacs that we otherwise might not have discovered.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-18  9:02 bug#37445: 27.0.50; Permission denied after make install Tino Calancha
  2019-09-18 19:12 ` Paul Eggert
@ 2019-09-19  6:57 ` Paul Eggert
  2019-09-19 11:35   ` Tino Calancha
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Eggert @ 2019-09-19  6:57 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 37445-done

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

I installed the attached patch, which should fix the bug even when PICKY_EACCES 
is nonzero. Boldly closing the bug report.

[-- Attachment #2: 0001-Omit-some-overenthusiastic-file-truename-calls.patch --]
[-- Type: text/x-patch, Size: 3662 bytes --]

From dff4f9c759f5cf19047719716ea5ee8ffdc3006e Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 18 Sep 2019 23:53:46 -0700
Subject: [PATCH] Omit some overenthusiastic file-truename calls

Problem reported by Tino Calancha (Bug#37445).
* src/emacs.c (init_cmdargs): Call file-truename only if
needed, i.e., if invocation-directory ends in "/i386/" on
WINDOWSNT.
* src/lread.c (readevalloop): If the sourcename is not
absolute, make it absolute.  There is no need to convert
non-absolute files into truenames, since absolute files are
not converted into truenames.
(init_lread): Do not convert source-directory into a truename
at startup.  There is no need to do so in a dumped Emacs since
an absolute file name suffices.  The source directory might
not even exist any more, or might have been replaced by an
interloper who takes advantage of the truename calculation.
(syms_of_lread): Remove Qfile_truename; no longer needed.
---
 src/emacs.c | 14 +++++++++-----
 src/lread.c | 11 +++--------
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/emacs.c b/src/emacs.c
index eb732810db..8a8d8b558e 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -479,9 +479,6 @@ init_cmdargs (int argc, char **argv, int skip_args, char const *original_pwd)
 
   if (!NILP (Vinvocation_directory))
     {
-      if (NILP (Vpurify_flag) && !NILP (Ffboundp (Qfile_truename)))
-        Vinvocation_directory = call1 (Qfile_truename, Vinvocation_directory);
-
       dir = Vinvocation_directory;
 #ifdef WINDOWSNT
       /* If we are running from the build directory, set DIR to the
@@ -490,8 +487,15 @@ init_cmdargs (int argc, char **argv, int skip_args, char const *original_pwd)
       if (SBYTES (dir) > sizeof ("/i386/") - 1
 	  && 0 == strcmp (SSDATA (dir) + SBYTES (dir) - sizeof ("/i386/") + 1,
 			  "/i386/"))
-	dir = Fexpand_file_name (build_string ("../.."), dir);
-#else  /* !WINDOWSNT */
+	{
+	  if (NILP (Vpurify_flag))
+	    {
+	      Lisp_Object file_truename = intern ("file-truename");
+	      if (!NILP (Ffboundp (file_truename)))
+		dir = call1 (file_truename, dir);
+	    }
+	  dir = Fexpand_file_name (build_string ("../.."), dir);
+	}
 #endif
       name = Fexpand_file_name (Vinvocation_name, dir);
       while (1)
diff --git a/src/lread.c b/src/lread.c
index 99e0ce30ba..4f3446b09d 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1999,11 +1999,10 @@ readevalloop (Lisp_Object readcharfun,
 	    (NILP (lex_bound) || EQ (lex_bound, Qunbound)
 	     ? Qnil : list1 (Qt)));
 
-  /* Try to ensure sourcename is a truename, except whilst preloading.  */
+  /* Ensure sourcename is absolute, except whilst preloading.  */
   if (!will_dump_p ()
-      && !NILP (sourcename) && !NILP (Ffile_name_absolute_p (sourcename))
-      && !NILP (Ffboundp (Qfile_truename)))
-    sourcename = call1 (Qfile_truename, sourcename) ;
+      && !NILP (sourcename) && !NILP (Ffile_name_absolute_p (sourcename)))
+    sourcename = Fexpand_file_name (sourcename, Qnil);
 
   LOADHIST_ATTACH (sourcename);
 
@@ -4678,9 +4677,6 @@ load_path_default (void)
 void
 init_lread (void)
 {
-  if (NILP (Vpurify_flag) && !NILP (Ffboundp (Qfile_truename)))
-    Vsource_directory = call1 (Qfile_truename, Vsource_directory);
-
   /* First, set Vload_path.  */
 
   /* Ignore EMACSLOADPATH when dumping.  */
@@ -5100,7 +5096,6 @@ this variable will become obsolete.  */);
   DEFSYM (Qload, "load");
   DEFSYM (Qload_file_name, "load-file-name");
   DEFSYM (Qeval_buffer_list, "eval-buffer-list");
-  DEFSYM (Qfile_truename, "file-truename");
   DEFSYM (Qdir_ok, "dir-ok");
   DEFSYM (Qdo_after_load_evaluation, "do-after-load-evaluation");
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-19  6:57 ` Paul Eggert
@ 2019-09-19 11:35   ` Tino Calancha
  2019-09-19 17:41     ` Paul Eggert
  0 siblings, 1 reply; 14+ messages in thread
From: Tino Calancha @ 2019-09-19 11:35 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 37445, Tino Calancha




On Wed, 18 Sep 2019, Paul Eggert wrote:

> I installed the attached patch, which should fix the bug even when 
> PICKY_EACCES is nonzero. Boldly closing the bug report.

Hi Paul,
I think the commit message mentions the opposite of what is actually done 
in the code.

commit 30026cfe666e9647aeef73e26df5ffca2fa2c662
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Sep 19 00:19:11 2019 -0700

     Default PICKY_ACCESS to false on non-MS

     * src/fileio.c (PICKY_EACCES) [!DOS_NT]: Default to false.

This is the code we have now:

#ifndef PICKY_EACCES
# ifdef DOS_NT
enum { PICKY_EACCES = false };
# else
enum { PICKY_EACCES = true };
# endif
#endif


This code starts Emacs on my Linux machine but it refuses to load my 
.emacs file:

M-: (load-file ".emacs")
Load error for /home/user_foo/.emacs:
(file-error Testing file Permission denied 
/home/ec2-user/soft/emacs-master/src)






^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-19 11:35   ` Tino Calancha
@ 2019-09-19 17:41     ` Paul Eggert
  2019-09-20  6:07       ` Tino Calancha
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Eggert @ 2019-09-19 17:41 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 37445

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

On 9/19/19 4:35 AM, Tino Calancha wrote:
> 
> This code starts Emacs on my Linux machine but it refuses to load my 
> .emacs file:
> 
> M-: (load-file ".emacs")
> Load error for /home/user_foo/.emacs:
> (file-error Testing file Permission denied 
> /home/ec2-user/soft/emacs-master/src)

Hmm, I'm not seeing the problem. As user_foo, what happens if you run 
this shell command?

cat /home/user_foo/.emacs

Also, what happens when you do this as user_foo?

strace -o tr emacs -Q -batch -eval '(message "%s" (load-file ".emacs"))'

Look at your "tr" file, and compare its system calls to mine (compressed 
and attached).

[-- Attachment #2: tr.gz --]
[-- Type: application/gzip, Size: 13305 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-19 17:41     ` Paul Eggert
@ 2019-09-20  6:07       ` Tino Calancha
  2019-09-20  7:00         ` Eli Zaretskii
  2019-09-20  9:10         ` Paul Eggert
  0 siblings, 2 replies; 14+ messages in thread
From: Tino Calancha @ 2019-09-20  6:07 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 37445, Tino Calancha



On Thu, 19 Sep 2019, Paul Eggert wrote:

> On 9/19/19 4:35 AM, Tino Calancha wrote:
>> 
>> This code starts Emacs on my Linux machine but it refuses to load my .emacs 
>> file:
>
> Hmm, I'm not seeing the problem. As user_foo, what happens if you run this 
> shell command?

I have reproduced the problem at 2 Amazon machines with the following 
recipe:
[A call to `require' inside .emacs seems to fire the issue]

$ whoami
ec2-user
$ cd ~/soft/emacs-master
$ make && sudo make install

$ ls /home
ec2-user

# Create a fresh new user
$ sudo useradd user_foo
$ ls /home
ec2-user  user_foo

# Change to the new user and go to its home dir
$ sudo su user_foo
$ cd
$ pwd
/home/user_foo
$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .emacs

$ cat .emacs
;; .emacs

(custom-set-variables
  ;; uncomment to always end a file with a newline
  ;'(require-final-newline t)
  ;; uncomment to disable loading of "default.el" at startup
  ;'(inhibit-default-init t)
  ;; default to unified diffs
  '(diff-switches "-u"))

;;; uncomment for CJK utf-8 support for non-Asian users
;; (require 'un-define)

# Add (require 'ert) at the botton: this seems to fire the issue
$ echo "(require 'ert)" >> .emacs

# Now launch Emacs: you will see at *Warnings* buffer
# File error: Testing file, Permission denied, /home/ec2-user/soft/emacs-master/src

# Now, if you want you can try:
M-: (require 'ert) RET
Testing file: Permission denied, /home/ec2-user/soft/emacs-master/src





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-20  6:07       ` Tino Calancha
@ 2019-09-20  7:00         ` Eli Zaretskii
  2019-09-20  9:10         ` Paul Eggert
  1 sibling, 0 replies; 14+ messages in thread
From: Eli Zaretskii @ 2019-09-20  7:00 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 37445, eggert, tino.calancha

> From: Tino Calancha <tino.calancha@gmail.com>
> Date: Fri, 20 Sep 2019 06:07:54 +0000 (UTC)
> Cc: 37445@debbugs.gnu.org, Tino Calancha <tino.calancha@gmail.com>
> 
> # Add (require 'ert) at the botton: this seems to fire the issue
> $ echo "(require 'ert)" >> .emacs
> 
> # Now launch Emacs: you will see at *Warnings* buffer
> # File error: Testing file, Permission denied, /home/ec2-user/soft/emacs-master/src
> 
> # Now, if you want you can try:
> M-: (require 'ert) RET
> Testing file: Permission denied, /home/ec2-user/soft/emacs-master/src

Can you show the C and Lisp backtraces for that error?  You can run
Emacs under GDB with a breakpoint on this line of fileio.c:

  static Lisp_Object
  file_metadata_errno (char const *action, Lisp_Object file, int err)
  {
    if (err == ENOENT || err == ENOTDIR || err == 0)
      return Qnil;
    report_file_errno (action, file, err);  <<<<<<<<<<<<<<<<<<<<<<<<<<
  }

Thanks.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-20  6:07       ` Tino Calancha
  2019-09-20  7:00         ` Eli Zaretskii
@ 2019-09-20  9:10         ` Paul Eggert
  2019-09-20 12:40           ` Eli Zaretskii
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Eggert @ 2019-09-20  9:10 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 37445

On 9/19/19 11:07 PM, Tino Calancha wrote:
> 
> # Now launch Emacs: you will see at *Warnings* buffer
> # File error: Testing file, Permission denied, /home/ec2-user/soft/emacs-master/src

Thanks, I think I see the problem: Emacs is examining its source code, via the 
Lisp variable source-directory, a variable that is put into the dump file. But 
in your case the source code's permissions forbid access.

This glitch suggests that there are more-serious security problems in the 
default Emacs install. If source-directory is (say) "/tmp/emacs-build/whatever", 
and /tmp/emacs-build is removed after the build, an attacker can provide a bogus 
source directory in place of the real one, and this could cause real problems.

Fedora 30 solves this potential security problem by arranging for the Lisp 
variable source-directory to have a value like "/usr/share/emacs/26.2/", which 
is a place attackers shouldn't be able to overwrite.

However, the default Emacs install doesn't do that. It installs the sources into 
(say) "/usr/local/share/emacs/27.0.50", but it doesn't arrange for 
source-directory to point there; instead, source-directory points to wherever 
the sources happened to be when Emacs was built, which could be in /tmp. This 
sounds like a configuration error in the default Emacs install, and I plan to 
look into why it's unsafe whereas the Fedora Emacs install is safer.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-20  9:10         ` Paul Eggert
@ 2019-09-20 12:40           ` Eli Zaretskii
  2019-09-20 18:17             ` Paul Eggert
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-09-20 12:40 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 37445, tino.calancha

> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Fri, 20 Sep 2019 02:10:10 -0700
> Cc: 37445@debbugs.gnu.org
> 
> This glitch suggests that there are more-serious security problems in the 
> default Emacs install. If source-directory is (say) "/tmp/emacs-build/whatever", 
> and /tmp/emacs-build is removed after the build, an attacker can provide a bogus 
> source directory in place of the real one, and this could cause real problems.

What kind of problems could accessing such a directory cause?

Note that there are also various EMACS* environment variables to which
Emacs heeds, they can override the likes of data-directory.

> Fedora 30 solves this potential security problem by arranging for the Lisp 
> variable source-directory to have a value like "/usr/share/emacs/26.2/", which 
> is a place attackers shouldn't be able to overwrite.
> 
> However, the default Emacs install doesn't do that. It installs the sources into 
> (say) "/usr/local/share/emacs/27.0.50", but it doesn't arrange for 
> source-directory to point there; instead, source-directory points to wherever 
> the sources happened to be when Emacs was built, which could be in /tmp. This 
> sounds like a configuration error in the default Emacs install, and I plan to 
> look into why it's unsafe whereas the Fedora Emacs install is safer.

If you point source-directory away of where the real sources are, some
Help features will cease working.  So I don't think we want the Fedora
solution.  What we want is that sources will be inaccessible in this
situation, but APIs such as 'load' and 'require' still work
regardless.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-20 12:40           ` Eli Zaretskii
@ 2019-09-20 18:17             ` Paul Eggert
  2019-09-20 18:59               ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Eggert @ 2019-09-20 18:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 37445, tino.calancha

On 9/20/19 5:40 AM, Eli Zaretskii wrote:
> If you point source-directory away of where the real sources are, some
> Help features will cease working.

Which Help features are those? The files that Help uses are already installed 
into the etc or lisp subdirectories of /usr/share/emacs/27.0.50 (or whatever).

I looked through the Emacs source code, and the only use of source-directory 
that seemed relevant was find-function-C-source-directory; is that what you were 
referring to? If so, the problem can be addressed by installing the C sources 
into /usr/share/emacs/27.0.50/src/*.[chm], which is something we should be doing 
anyway since the build directory might be missing or (worse) wrong when someone 
wants to look at the sources of the installed Emacs. In the old days installing 
the C sources might have been thought too heavyweight but those days are long gone.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-20 18:17             ` Paul Eggert
@ 2019-09-20 18:59               ` Eli Zaretskii
  2019-09-20 19:33                 ` Paul Eggert
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-09-20 18:59 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 37445, tino.calancha

> Cc: tino.calancha@gmail.com, 37445@debbugs.gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Fri, 20 Sep 2019 11:17:43 -0700
> 
> I looked through the Emacs source code, and the only use of source-directory 
> that seemed relevant was find-function-C-source-directory; is that what you were 
> referring to?

Yes.  Help uses that when you activate the button in a *Help* buffer
that says a function is defined in C sources.

> If so, the problem can be addressed by installing the C sources 
> into /usr/share/emacs/27.0.50/src/*.[chm], which is something we should be doing 
> anyway since the build directory might be missing or (worse) wrong when someone 
> wants to look at the sources of the installed Emacs. In the old days installing 
> the C sources might have been thought too heavyweight but those days are long gone.

You are talking about a serious change in Emacs installation
procedure.  It should first be discussed and its various implications
understood and considered.  I'm not so sure this is a good approach,
or that it should be the only one supported.  Some people may not want
to install sources; others still build their own Emacs, and have the
sources available in accessible directories, so installing the sources
into yet another tree will be uneconomical for them.  And there might
be other use cases and other considerations.  If we want to make such
changes, we should do that in a way that caters to all the use cases
we support today.

I asked what security problems could be caused by accessing a source
tree, and you didn't answer.  From where I stand, that is a crucial
question: if the danger is not real, or non-existent, I see no good
reason to make such significant changes, certainly not soon.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-20 18:59               ` Eli Zaretskii
@ 2019-09-20 19:33                 ` Paul Eggert
  2019-09-21  6:07                   ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Eggert @ 2019-09-20 19:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 37445, tino.calancha

On 9/20/19 11:59 AM, Eli Zaretskii wrote:
> If we want to make such
> changes, we should do that in a way that caters to all the use cases
> we support today.

Of course. Among other things we should continue to let people access the 
sources where they were originally built, if that's what they want to do. But 
the default installation should be a safe one.

If it is considered to be too much to install the C source files by default, we 
can simply make that an installation option with default off; that will still be 
safe, since find-function-C-source-directory will do the right thing when the 
source files are not installed. However, I'm mildly inclined to install the 
source files by default since they don't grow the installation size that much: 
on my platform the current default installation is 144 MiB, and the relevant 
source files are 8.6 MiB uncompressed, 2.5 MiB compressed (these counts include 
filesystem overhead).
> I asked what security problems could be caused by accessing a source tree

I'll reply separately about that.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-20 19:33                 ` Paul Eggert
@ 2019-09-21  6:07                   ` Eli Zaretskii
  2019-09-26 20:11                     ` Paul Eggert
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-09-21  6:07 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 37445, tino.calancha

> Cc: tino.calancha@gmail.com, 37445@debbugs.gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Fri, 20 Sep 2019 12:33:20 -0700
> 
> If it is considered to be too much to install the C source files by default, we 
> can simply make that an installation option with default off; that will still be 
> safe, since find-function-C-source-directory will do the right thing when the 
> source files are not installed. However, I'm mildly inclined to install the 
> source files by default since they don't grow the installation size that much: 

If we decide to go this way, I think we should start by making such
source installation optional, because there might be factors we will
be unable to consider or predict.  There's no rush and no particular
reason to make this the default soon, just because we can.

But let's discuss this on emacs-devel, not here.

> > I asked what security problems could be caused by accessing a source tree
> 
> I'll reply separately about that.

TIA, and please do that on emacs-devel.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#37445: 27.0.50; Permission denied after make install
  2019-09-21  6:07                   ` Eli Zaretskii
@ 2019-09-26 20:11                     ` Paul Eggert
  0 siblings, 0 replies; 14+ messages in thread
From: Paul Eggert @ 2019-09-26 20:11 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 37445-done, tino.calancha

On 9/20/19 11:07 PM, Eli Zaretskii wrote:
> let's discuss this on emacs-devel, not here.

OK, I'll do that. I filed Bug#37527, with a patch for the problem with 
'C-h f' on typical GNU/Linux installations, and will mention this on 
emacs-devel. I am closing Bug#37445 with this email, as that bug was 
fixed by the earlier patches already on master.





^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-09-26 20:11 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-18  9:02 bug#37445: 27.0.50; Permission denied after make install Tino Calancha
2019-09-18 19:12 ` Paul Eggert
2019-09-19  6:57 ` Paul Eggert
2019-09-19 11:35   ` Tino Calancha
2019-09-19 17:41     ` Paul Eggert
2019-09-20  6:07       ` Tino Calancha
2019-09-20  7:00         ` Eli Zaretskii
2019-09-20  9:10         ` Paul Eggert
2019-09-20 12:40           ` Eli Zaretskii
2019-09-20 18:17             ` Paul Eggert
2019-09-20 18:59               ` Eli Zaretskii
2019-09-20 19:33                 ` Paul Eggert
2019-09-21  6:07                   ` Eli Zaretskii
2019-09-26 20:11                     ` Paul Eggert

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).