diff options
Diffstat (limited to 'Assistant/Ssh.hs')
-rw-r--r-- | Assistant/Ssh.hs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Assistant/Ssh.hs b/Assistant/Ssh.hs index 7875c4c4c..182e85377 100644 --- a/Assistant/Ssh.hs +++ b/Assistant/Ssh.hs @@ -82,9 +82,10 @@ validateSshPubKey pubkey = either error return $ check $ words pubkey where (ssh, keytype) = separate (== '-') prefix - checkcomment comment - | all (\c -> isAlphaNum c || c == '@' || c == '-' || c == '_' || c == '.') comment = ok - | otherwise = err "bad comment in ssh public key" + checkcomment comment = case filter (not . safeincomment) comment of + [] -> ok + badstuff -> err $ "bad comment in ssh public key (contains: \"" ++ badstuff ++ "\")" + safeincomment c = isAlphaNum c || c == '@' || c == '-' || c == '_' || c == '.' addAuthorizedKeys :: Bool -> FilePath -> SshPubKey -> IO Bool addAuthorizedKeys rsynconly dir pubkey = boolSystem "sh" |