Replace magic numbers in flock calls with symbolic constants
authorJacob Bachmeyer <jcb@gnu.org>
Sun, 30 Apr 2023 04:29:39 +0000 (23:29 -0500)
committerJacob Bachmeyer <jcb@gnu.org>
Sun, 30 Apr 2023 04:29:39 +0000 (23:29 -0500)
This also fixes a long-standing bug where the serials file was never
actually unlocked until it was closed, at which time the kernel will
implicitly release the lock.  The cause of the bug, simply, was the use
of the wrong number in place of LOCK_UN.  Using the constant fixes this.

gatekeeper.pl

index f69470d2340ffac812aa67b6af037e8a659b87bc..d91895367b520cea5cdfebb5c926741058bb7787 100755 (executable)
@@ -2450,10 +2450,10 @@ sub advance_timestamp_ratchet {
 
   if (!-e $serials_path) {
     open(SERIALS,">$serials_path");
-    flock(SERIALS,2);          # Take exclusive lock
+    flock(SERIALS,LOCK_EX);            # Take exclusive lock
   } else {
     open(SERIALS,"+<$serials_path");
-    flock(SERIALS,2);          # Take exclusive lock
+    flock(SERIALS,LOCK_EX);            # Take exclusive lock
     local *_;
     while (<SERIALS>) {
       s/\s+//g;
@@ -2469,7 +2469,7 @@ sub advance_timestamp_ratchet {
   # Verify that this is really a new version of the file!
   if (exists($serials{$full_filename})
       && ($serials{$full_filename} >= $new_epoch)) {
-    flock(SERIALS,4);          # Release lock
+    flock(SERIALS,LOCK_UN);            # Release lock
     throw signature_replay =>
       previous_timestamp => $old_epoch, new_timestamp => $new_epoch
   }
@@ -2480,7 +2480,7 @@ sub advance_timestamp_ratchet {
     print SERIALS "$key:$serials{$key}\n";
   }
 
-  flock(SERIALS,4);            # Release lock
+  flock(SERIALS,LOCK_UN);              # Release lock
   close(SERIALS);
   flock $serials_flag, LOCK_UN or die "unlock serials flag: $!";
   close $serials_flag          or die "close serials flag: $!";