diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2017-07-15 23:27:29 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2017-07-16 12:14:46 +0100 |
commit | 51a525fdc552ff2d5f388c47b29c38784f2e5fa4 (patch) | |
tree | 3cfe249a47c814a107b3aaa8f9804dca2ec0724f | |
parent | 83af484ee17f5d18ee6a161b01aa0b546d8943cb (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>
-rw-r--r-- | debian/changelog | 1 | ||||
-rwxr-xr-x | dgit | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index eeaeb1f..ad43d41 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ dgit (3.12~) unstable; urgency=medium patch filenames. * dgit import: Defend against broken symlinks in .. * dgit import: Right error message for missing files in .. + * dgit import: Avoid making broken symlinks in .. -- @@ -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); |