mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Merge remote-tracking branch 'dgoulet/bug20646_030_01'
This commit is contained in:
commit
b7db39e88a
5
changes/bug20646
Normal file
5
changes/bug20646
Normal file
@ -0,0 +1,5 @@
|
||||
o Minor bugfix (util)
|
||||
- When finishing writing a file to disk, if we were about to replace the
|
||||
file with the temporary file created before and we fail to replace it,
|
||||
remove the temporary file so it doesn't stay on disk. Closes #20646;
|
||||
bugfix on tor-0.2.0.7-alpha; Patch by fk.
|
@ -2601,6 +2601,14 @@ finish_writing_to_file_impl(open_file_t *file_data, int abort_write)
|
||||
|
||||
if (file_data->rename_on_close) {
|
||||
tor_assert(file_data->tempname && file_data->filename);
|
||||
if (!abort_write) {
|
||||
tor_assert(strcmp(file_data->filename, file_data->tempname));
|
||||
if (replace_file(file_data->tempname, file_data->filename)) {
|
||||
log_warn(LD_FS, "Error replacing \"%s\": %s", file_data->filename,
|
||||
strerror(errno));
|
||||
abort_write = r = -1;
|
||||
}
|
||||
}
|
||||
if (abort_write) {
|
||||
int res = unlink(file_data->tempname);
|
||||
if (res != 0) {
|
||||
@ -2609,13 +2617,6 @@ finish_writing_to_file_impl(open_file_t *file_data, int abort_write)
|
||||
file_data->tempname, strerror(errno));
|
||||
r = -1;
|
||||
}
|
||||
} else {
|
||||
tor_assert(strcmp(file_data->filename, file_data->tempname));
|
||||
if (replace_file(file_data->tempname, file_data->filename)) {
|
||||
log_warn(LD_FS, "Error replacing \"%s\": %s", file_data->filename,
|
||||
strerror(errno));
|
||||
r = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user