summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assistant/Ssh.hs6
-rw-r--r--debian/changelog2
2 files changed, 7 insertions, 1 deletions
diff --git a/Assistant/Ssh.hs b/Assistant/Ssh.hs
index 876f85466..59ed34497 100644
--- a/Assistant/Ssh.hs
+++ b/Assistant/Ssh.hs
@@ -223,6 +223,10 @@ knownHost :: Text -> IO Bool
knownHost hostname = do
sshdir <- sshDir
ifM (doesFileExist $ sshdir </> "known_hosts")
- ( not . null <$> readProcess "ssh-keygen" ["-F", T.unpack hostname]
+ ( not . null <$> checkhost
, return False
)
+ where
+ {- ssh-keygen -F can crash on some old known_hosts file -}
+ checkhost = catchDefaultIO "" $
+ readProcess "ssh-keygen" ["-F", T.unpack hostname]
diff --git a/debian/changelog b/debian/changelog
index 976b70903..f8efeba5a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -16,6 +16,8 @@ git-annex (3.20120925) UNRELEASED; urgency=low
in the git repository, as that would allow anyone with access to
the repository access to the S3 account. Instead, they're stored
in a 600 mode file in the local git repo.
+ * webapp: Avoid crashing when ssh-keygen -F chokes on an invalid known_hosts
+ file.
-- Joey Hess <joeyh@debian.org> Mon, 24 Sep 2012 19:58:07 -0400