From 969fe6615ff26fc2ff78b6b2dd853b5a696fe90f Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sun, 28 Jul 2019 12:29:59 +0100 Subject: [PATCH] [Minor] Asn.pl: Fix tempfile creation Submitted by: @citrin --- utils/asn.pl | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/utils/asn.pl b/utils/asn.pl index fa3cffdb8..61e58d760 100644 --- a/utils/asn.pl +++ b/utils/asn.pl @@ -199,7 +199,11 @@ my $zone_header = << "EOH"; EOH if ($v4) { - open my $v4_fh, '>', ".$v4_file.tmp"; + # create temp file in the same dir so we can be sure that mv is atomic + my $out_dir = dirname($v4_file); + my $out_file = basename($v4_file); + my $temp_file = "$out_dir/.$out_file.tmp"; + open my $v4_fh, '>', $temp_file; print $v4_fh $zone_header; while (my ($net, $asn) = each %{ $networks->{4} }) { @@ -211,11 +215,14 @@ if ($v4) { } close $v4_fh; - rename ".$v4_file.tmp", $v4_file; + rename $temp_file, $v4_file; } if ($v6) { - open my $v6_fh, '>', ".$v6_file.tmp"; + my $out_dir = dirname($v6_file); + my $out_file = basename($v6_file); + my $temp_file = "$out_dir/.$out_file.tmp"; + open my $v6_fh, '>', $temp_file; print $v6_fh $zone_header; while (my ($net, $asn) = each %{ $networks->{6} }) { @@ -227,7 +234,7 @@ if ($v6) { } close $v6_fh; - rename ".$v6_file.tmp", $v6_file; + rename $temp_file, $v6_file; } exit 0; -- 2.39.5