From 0c93fa94fbbb8d6284ee89e82298cc0e580203b4 Mon Sep 17 00:00:00 2001 From: Nick Pillitteri Date: Fri, 8 Jan 2016 16:47:54 -0500 Subject: Update SSHConfig.parse to strip leading and trailing whitespace Fixes #499 --- paramiko/config.py | 4 +++- tests/test_util.py | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/paramiko/config.py b/paramiko/config.py index 5c2efdcc..6553691b 100644 --- a/paramiko/config.py +++ b/paramiko/config.py @@ -55,7 +55,9 @@ class SSHConfig (object): """ host = {"host": ['*'], "config": {}} for line in file_obj: - line = line.rstrip('\r\n').lstrip() + # Strip any leading or trailing whitespace from the line. + # See https://github.com/paramiko/paramiko/issues/499 for more info. + line = line.strip() if not line or line.startswith('#'): continue if '=' in line: diff --git a/tests/test_util.py b/tests/test_util.py index 0e7d0b2b..bca6f5d5 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -30,6 +30,7 @@ from paramiko.py3compat import StringIO, byte_ord, b from tests.util import ParamikoTest +# Note some lines in this configuration have trailing spaces on purpose test_config_file = """\ Host * User robey @@ -105,7 +106,7 @@ class UtilTest(ParamikoTest): self.assertEqual(config._config, [{'host': ['*'], 'config': {}}, {'host': ['*'], 'config': {'identityfile': ['~/.ssh/id_rsa'], 'user': 'robey'}}, {'host': ['*.example.com'], 'config': {'user': 'bjork', 'port': '3333'}}, - {'host': ['*'], 'config': {'crazy': 'something dumb '}}, + {'host': ['*'], 'config': {'crazy': 'something dumb'}}, {'host': ['spoo.example.com'], 'config': {'crazy': 'something else'}}]) def test_3_host_config(self): @@ -114,14 +115,14 @@ class UtilTest(ParamikoTest): config = paramiko.util.parse_ssh_config(f) for host, values in { - 'irc.danger.com': {'crazy': 'something dumb ', + 'irc.danger.com': {'crazy': 'something dumb', 'hostname': 'irc.danger.com', 'user': 'robey'}, - 'irc.example.com': {'crazy': 'something dumb ', + 'irc.example.com': {'crazy': 'something dumb', 'hostname': 'irc.example.com', 'user': 'robey', 'port': '3333'}, - 'spoo.example.com': {'crazy': 'something dumb ', + 'spoo.example.com': {'crazy': 'something dumb', 'hostname': 'spoo.example.com', 'user': 'robey', 'port': '3333'} -- cgit v1.2.3 From 1919014fa649d32dec4039f2b8c115233c082418 Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Tue, 19 Jan 2016 14:46:39 -0800 Subject: Changelog re #499, re #656 Closes #499 --- sites/www/changelog.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst index 0eaa3f25..234a8c8a 100644 --- a/sites/www/changelog.rst +++ b/sites/www/changelog.rst @@ -2,6 +2,9 @@ Changelog ========= +* :bug:`499` Strip trailing/leading whitespace from lines when parsing SSH + config files - this brings things in line with OpenSSH behavior. Thanks to + Alfredo Esteban for the original report and Nick Pillitteri for the patch. * :support:`636` Clean up and enhance the README (and rename it to ``README.rst`` from just ``README``). Thanks to ``@LucasRMehl``. * :bug:`401` Fix line number reporting in log output regarding invalid -- cgit v1.2.3