summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--paramiko/config.py2
-rw-r--r--sites/www/changelog.rst2
-rw-r--r--tests/test_util.py6
3 files changed, 9 insertions, 1 deletions
diff --git a/paramiko/config.py b/paramiko/config.py
index 77fa13d7..f650ee24 100644
--- a/paramiko/config.py
+++ b/paramiko/config.py
@@ -55,7 +55,7 @@ class SSHConfig (object):
"""
host = {"host": ['*'], "config": {}}
for line in file_obj:
- line = line.rstrip('\n').lstrip()
+ line = line.rstrip('\r\n').lstrip()
if (line == '') or (line[0] == '#'):
continue
if '=' in line:
diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index cdd513f4..903e6378 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,8 @@
Changelog
=========
+* :bug:`239` Add Windows-style CRLF support to SSH config file parsing. Props
+ to Christopher Swenson.
* :support:`229` Fix a couple of incorrectly-copied docstrings' ``..
versionadded::`` RST directives. Thanks to Aarni Koskela for the catch.
* :support:`169 backported` Minor refactor of
diff --git a/tests/test_util.py b/tests/test_util.py
index 6bde4045..ecf8db72 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -338,3 +338,9 @@ IdentityFile something_%l_using_fqdn
"""
config = paramiko.util.parse_ssh_config(StringIO(test_config))
assert config.lookup('meh') # will die during lookup() if bug regresses
+
+ def test_13_config_dos_crlf_succeeds(self):
+ config_file = StringIO("host abcqwerty\r\nHostName 127.0.0.1\r\n")
+ config = paramiko.SSHConfig()
+ config.parse(config_file)
+ self.assertEqual(config.lookup("abcqwerty")["hostname"], "127.0.0.1")