bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#27986: 26.0.50; 'rename-file' can rename files without confirmation


From: Paul Eggert
Subject: bug#27986: 26.0.50; 'rename-file' can rename files without confirmation
Date: Fri, 11 Aug 2017 01:15:13 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1

Probably the test for case-insensitive file names should be
removed altogether

Which one? there are two of them.

There should be just one such test, since it's testing the same thing and there's no point to doing the same test twice. And I notice the code has some other duplicate system calls. I installed the attached patch, which prunes away some of these duplicates. With this patch, (rename-file "a" "b/") now takes just one system call on recent GNU/Linux, whereas it used to take four (and was not atomic).

However, even with this patch there are races on GNU/Linux which can lead to potential security problems. Perhaps we can't fix these races on MS-Windows but we should be able to fix them on a GNUish host. However, we will need to change the semantics of rename-file etc. slightly, since no single system call supports the cp-like target rewriting of these functions. I have a fix in mind to do that in a hopefully compatible-enough way, which I'll try to propose soon. I'll keep case-insensitive file systems in mind when I do that.

This reminds me of a similar problem in GNU coreutils which I fixed a dozen years ago by adding the -T option to mv, ln, etc.

Attachment: 0001-Improve-performance-for-rename-file-etc.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]