From 6b6d2e426e5ee6b08c706d57db7502d80e00e82b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 22 May 2016 15:24:08 +0100 Subject: [PATCH] When cleaning up after failed clone, stat the to-be-cleaned-up directory before running rmtree on it. Closes:#796773. --- debian/changelog | 4 ++++ dgit | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1f73c7c3..f3a88a2f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,10 @@ dgit (1.5~~) unstable; urgency=medium has been changed recently and now this default setting is very awkward to change for the dgit user. + Bugfixes: + * When cleaning up after failed clone, stat the to-be-cleaned-up + directory before running rmtree on it. Closes:#796773. + Test suite: * When sbuild fails, do not crash due to sed not finding the log file. Instead, simply tolerate the absence of the log file. diff --git a/dgit b/dgit index 9edc6577..91f43af0 100755 --- a/dgit +++ b/dgit @@ -2131,7 +2131,13 @@ sub cmd_clone { return if $!==&ENOENT; die "chdir $cwd_remove: $!"; } - rmtree($dstdir) or die "remove $dstdir: $!\n"; + if (stat $dstdir) { + rmtree($dstdir) or die "remove $dstdir: $!\n"; + } elsif (!grep { $! == $_ } + (ENOENT, ENOTDIR, EACCES, EPERM, ELOOP)) { + } else { + print STDERR "check whether to remove $dstdir: $!\n"; + } }; } -- 2.30.2