Package: libio-stringy-perl Version: 2.110-1 Severity: grave File: /usr/share/perl5/IO/AtomicFile.pm Tags: patch
Upstream accepted the patch but did not make a new release yet. I found a grave bug in IO::AtomicFile I attached the script I tried. I ran it and then I filled the disk space and ran it again but this time I just got an empty file :( Close exit code should be checked! Patch attached.
io_atomic_test.pl
Description: Perl program
--- IO/AtomicFile.pm
+++ IO/AtomicFile.pm
@@ -86,10 +86,13 @@
sub close {
my ($self, $die) = @_;
unless ($self->_closed(1)) { ### sentinel...
- $self->SUPER::close();
- rename(${*$self}{'io_atomicfile_temp'},
- ${*$self}{'io_atomicfile_path'})
- or ($die ? die "close atomic file: $!\n" : return undef);
+ if ($self->SUPER::close()) {
+ rename(${*$self}{'io_atomicfile_temp'},
+ ${*$self}{'io_atomicfile_path'})
+ or ($die ? die "close (rename) atomic file: $!\n" : return
undef);
+ } else {
+ $die ? die "close atomic file: $!\n" : return undef;
+ }
}
1;
}

