• Paul Eggert's avatar
    Fix race with rename-file etc. with dir NEWNAME · 01c885f2
    Paul Eggert authored
    This changes the behavior of rename-file etc. slightly.
    The old behavior mostly disagreed with the documentation, and had
    a race condition bug that could allow attackers to modify victims'
    write-protected directories (Bug#27986).
    * doc/lispref/files.texi (Changing Files): Document that in
    rename-file etc., NEWFILE is special if it is a directory name.
    * etc/NEWS: Document the change in behavior.
    * src/fileio.c (directory_like): Remove.  All uses removed.
    (expand_cp_target): Test only whether NEWNAME is a directory name,
    not whether it is currently a directory.  This avoids a race.
    (Fcopy_file, Frename_file, Fadd_name_to_file, Fmake_symbolic_link):
    Document behavior if NEWNAME is a directory name.
    (Frename_file): Simplify now that the destdir behavior occurs
    only when NEWNAME is a directory name.
    * test/lisp/net/tramp-tests.el (tramp-test11-copy-file)
    (tramp-test12-rename-file, tramp--test-check-files):
    Adjust tests to match new behavior.
    01c885f2
files.texi 145 KB