Skip to content

Commit 8bc6881

Browse files
committed
Fix race condition scheduling $tempdir deletion
The `cargo-zng` script contained: trap 'rm -rf "$tempdir"' 0 INT tempdir="$(mktemp -d)" That releases a resource that may occasionally not have been acquired. In the rare case that the script would be interrupted before `$tempdir` was set, this would attempt to read the previous value of `$tempdir`. But if the calling environment had an environment variable of this name, then its value would have been inherited as the initial `$tempdir` in the script, and wrongly deleted. The change made here puts the commands in the other order, so we only arrange for the deletion of `$tempdir` once the directory we want to delete exists and `$tempdir` will definitely expand to its name and not that of another directory. In a sense, this trades one race condition for another, in that now the directory will not be deleted if the script is interrupted immediately after it is created. But this is not a problem, because it does not cause data loss, and the script already does not try to cover all ways the script can be terminated in the `trap` command.
1 parent bb9e89f commit 8bc6881

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

cargo-zng

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22
set -eu
3-
trap 'rm -rf "$tempdir"' 0 INT
43
tempdir="$(mktemp -d)"
4+
trap 'rm -rf "$tempdir"' 0 INT
55
cargo package -l --allow-dirty |
66
tr '\\' '/' |
77
grep -v '^Cargo\.toml\.orig$' |

0 commit comments

Comments
 (0)