Fix permissions bugs with setgid directories etc.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 14 Dec 2012 18:59:00 +0000 (10:59 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 14 Dec 2012 18:59:00 +0000 (10:59 -0800)
commit97976f9f3fcf588535bf4afad71de92860bb2f8e
tree48af44cc93624fd119f59ceb94fbb5c5f3eaaf7c
parentad966fe7542070b5c9aa34ed019d586e7c3adae6
Fix permissions bugs with setgid directories etc.

* configure.ac (BSD4_2): Remove; no longer needed.
* admin/CPP-DEFINES (BSD4_2): Remove.
* doc/lispintro/emacs-lisp-intro.texi (Files List):
directory-files-and-attributes now outputs t for attribute that's
now a placeholder.
* doc/lispref/files.texi (Testing Accessibility): Document GROUP arg
of file-ownership-preserved-p.
(File Attributes): Document that 9th element is now
just a placeholder.
* doc/lispref/os.texi (User Identification): Document new functions group-gid,
group-real-gid.
* etc/NEWS: Document changes to file-attributes,
file-ownership-preserved-p.
Mention new functions group-gid, group-real-gid.
* lisp/files.el (backup-buffer): Don't rely on 9th output of
file-attributes, as it's now a placeholder.  Instead, use the new
optional arg of file-ownership-preserved-p.
(file-ownership-preserved-p): New optional arg GROUP.
Fix mishandling of setuid directories that would cause this
function to return t when it should have returned nil.
Document what happens if the file does not exist, and when
it's not known whether the ownership will be preserved.
* lisp/net/tramp-sh.el (tramp-sh-handle-file-ownership-preserved-p):
Likewise.
(tramp-get-local-gid): Use group-gid for integer, as that's
faster and more reliable.
* src/dired.c (Ffile_attributes): Return t as the 9th attribute,
to mark it as a placeholder.  The old value was often wrong.
The only user of this attribute has been changed to use
file-ownership-preserved-p instead, with its new group arg.
* src/editfns.c (Fgroup_gid, Fgroup_real_gid): New functions.

Fixes: debbugs:13125
17 files changed:
ChangeLog
admin/CPP-DEFINES
admin/ChangeLog
configure.ac
doc/lispintro/ChangeLog
doc/lispintro/emacs-lisp-intro.texi
doc/lispref/ChangeLog
doc/lispref/files.texi
doc/lispref/os.texi
etc/ChangeLog
etc/NEWS
lisp/ChangeLog
lisp/files.el
lisp/net/tramp-sh.el
src/ChangeLog
src/dired.c
src/editfns.c