summaryrefslogtreecommitdiff
path: root/dgit
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2017-07-15 23:27:29 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2017-07-16 12:14:46 +0100
commit51a525fdc552ff2d5f388c47b29c38784f2e5fa4 (patch)
tree3cfe249a47c814a107b3aaa8f9804dca2ec0724f /dgit
parent83af484ee17f5d18ee6a161b01aa0b546d8943cb (diff)
dgit import: Avoid making broken symlinks in ..
In most cases we could carry on and fail later. But creating a broken symlink is undesirable, particularly because it might prevent dgit from trying to make a non-broken symlink pointing elsewhere in future (or prevent dget from downloading the file). Even worse, if the dsc is in .. but an absolute path was provided, we would make a circular symlink! Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'dgit')
-rwxr-xr-xdgit2
1 files changed, 2 insertions, 0 deletions
diff --git a/dgit b/dgit
index 944de85..dd3b31c 100755
--- a/dgit
+++ b/dgit
@@ -6365,6 +6365,8 @@ END
$there =~ s#/+[^/]+$## or
fail "import $dscfn requires ../$f, but it does not exist";
$there .= "/$f";
+ my $test = $there =~ m{^/} ? $there : "../$there";
+ stat $test or fail "import $dscfn requires $test, but: $!";
symlink $there, $here or fail "symlink $there to $here: $!";
progress "made symlink $here -> $there";
# print STDERR Dumper($fi);