Fix a race in File::stat() tests

This commit is contained in:
Petr Písař 2019-11-12 17:06:12 +01:00
parent eadda09063
commit 126f691220
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,48 @@
From 7c3f362035dec9b7eaec388b1f7f1619c1bd96a3 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Mon, 4 Nov 2019 09:52:22 +1100
Subject: [PATCH] prevent a race between name-based stat and an open modifying
atime
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Most linux systems rarely update atime, so it's very unlikely
for this issue to trigger there, but on a system with classic atime
behaviour this was a race between open modifying atime and time()
ticking over.
gh #17234
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
lib/File/stat.t | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib/File/stat.t b/lib/File/stat.t
index c403fc4498..fc9bb12cef 100644
--- a/lib/File/stat.t
+++ b/lib/File/stat.t
@@ -133,6 +133,9 @@ SKIP: {
test_X_ops($^X, "for $^X", qr/A/);
}
+# open early so atime is consistent with the name based call
+local *STAT;
+my $canopen = open(STAT, '<', $file);
my $stat = File::stat::stat($file);
isa_ok($stat, 'File::stat', 'should build a stat object');
@@ -143,8 +146,7 @@ for (split //, "tTB") {
}
SKIP: {
- local *STAT;
- skip("Could not open file: $!", 2) unless open(STAT, '<', $file);
+ skip("Could not open file: $!", 2) unless $canopen;
isa_ok(File::stat::stat('STAT'), 'File::stat',
'... should be able to find filehandle');
--
2.21.0

View File

@ -281,6 +281,9 @@ Patch67: perl-5.31.5-Tie-StdHandle-BINMODE-handle-layer-argument.patch
Patch68: perl-5.31.5-toke.c-Fix-bug-tr-upgrading-to-UTF-8-in-middle.patch
Patch69: perl-5.31.5-toke.c-comment-changes.patch
# Fix a race in File::stat() tests, GH#17234, in upstream after 5.31.5
Patch70: perl-5.31.5-prevent-a-race-between-name-based-stat-and-an-open-m.patch
# Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048
Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch
@ -2871,6 +2874,7 @@ rm -rf .git # Perl tests examine a git repository
%patch67 -p1
%patch68 -p1
%patch69 -p1
%patch70 -p1
%patch200 -p1
%patch201 -p1
@ -2935,6 +2939,7 @@ perl -x patchlevel.h \
'Fedora Patch67: Fix handling a layer argument in Tie::StdHandle::BINMODE() (RT#132475)' \
'Fedora Patch68: Fix an unintended upgrade to UTF-8 in the middle of a transliteration' \
'Fedora Patch69: Fix an unintended upgrade to UTF-8 in the middle of a transliteration' \
'Fedora Patch70: Fix a race in File::stat() tests (GH#17234)' \
'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \
'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \
%{nil}
@ -5186,6 +5191,7 @@ popd
- Fix taint mode documentation regarding @INC
- Fix handling a layer argument in Tie::StdHandle::BINMODE() (RT#132475)
- Fix an unintended upgrade to UTF-8 in the middle of a transliteration
- Fix a race in File::stat() tests (GH#17234)
* Mon Nov 11 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.30.1-447
- 5.30.1 bump (see <https://metacpan.org/pod/release/SHAY/perl-5.30.1/pod/perldelta.pod>