commit c45df589fac14a2d1c3d0389d7f8873a13240481
parent 44fd29992118b6c2ac2a542177e0d18c2c1d95b7
Author: Benno Schulenberg <bensberg@telfort.nl>
Date: Tue, 19 May 2020 14:56:37 +0200
locking: ignore the insecure-backup flag when creating a lock file
One microsecond before a lock file is created an existing lock file
has been deleted, and if that deletion failed, writing the lock file
is aborted. So why should writing the lock file not be aborted when
the lock file cannot be exclusively created one microsecond later?
This makes no sense. So... always include the O_EXCL flag, also
when the INSECURE_BACKUP flag is set.
(And anyway: lock files are not an essential part of editing, they
are just a small service to the user, AND they have nothing to do
with backups, so a backup flag should not influence them.)
Diffstat:
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/src/files.c b/src/files.c
@@ -129,7 +129,7 @@ bool write_lockfile(const char *lockfilename, const char *filename, bool modifie
struct passwd *mypwuid = getpwuid(myuid);
char myhostname[32];
struct stat fileinfo;
- int cflags, fd;
+ int fd;
FILE *filestream;
char *lockdata;
size_t wroteamt;
@@ -151,13 +151,8 @@ bool write_lockfile(const char *lockfilename, const char *filename, bool modifie
if (!delete_lockfile(lockfilename))
return FALSE;
- if (ISSET(INSECURE_BACKUP))
- cflags = O_WRONLY | O_CREAT | O_APPEND;
- else
- cflags = O_WRONLY | O_CREAT | O_EXCL | O_APPEND;
-
/* Try to create the lockfile. */
- fd = open(lockfilename, cflags, RW_FOR_ALL);
+ fd = open(lockfilename, O_CREAT|O_EXCL|O_WRONLY, RW_FOR_ALL);
if (fd < 0) {
statusline(MILD, _("Error writing lock file %s: %s"),