From 90f574f02e0b8432de2ad03951ea74df3464dc38 Mon Sep 17 00:00:00 2001 From: Saagar Jha Date: Thu, 4 May 2023 13:50:00 -0700 Subject: [PATCH] Parse OpenSSH versions with no SSH_EXTRAVERSION If the Debian banner is not used, then there won't be a space after the version number: it'll be followed directly by a comma. Bug: https://crbug.com/gerrit/16903 Change-Id: I12b873f32afc9424f42b772399c346f96ca95a96 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/372875 Tested-by: Saagar Jha Reviewed-by: Mike Frysinger --- ssh.py | 2 +- tests/test_ssh.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ssh.py b/ssh.py index 1d7ebe32..bb89fa1f 100644 --- a/ssh.py +++ b/ssh.py @@ -42,7 +42,7 @@ def _parse_ssh_version(ver_str=None): """parse a ssh version string into a tuple""" if ver_str is None: ver_str = _run_ssh_version() - m = re.match(r"^OpenSSH_([0-9.]+)(p[0-9]+)?\s", ver_str) + m = re.match(r"^OpenSSH_([0-9.]+)(p[0-9]+)?[\s,]", ver_str) if m: return tuple(int(x) for x in m.group(1).split(".")) else: diff --git a/tests/test_ssh.py b/tests/test_ssh.py index a9c1be7f..d74f7fe8 100644 --- a/tests/test_ssh.py +++ b/tests/test_ssh.py @@ -39,6 +39,8 @@ class SshTests(unittest.TestCase): "OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017\n" ) self.assertEqual(ver, (7, 6)) + ver = ssh._parse_ssh_version("OpenSSH_9.0p1, LibreSSL 3.3.6\n") + self.assertEqual(ver, (9, 0)) def test_version(self): """Check version() handling."""