From: Federico Caselli Date: Mon, 21 Jun 2021 19:01:57 +0000 (+0200) Subject: Improve regexp used by pymssql to parse db version X-Git-Tag: rel_1_4_19~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a84881e1b7505c3ffb9b9f0ac2b227cbd650aac2;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Improve regexp used by pymssql to parse db version Made improvements to the server version regexp used by the pymssql dialect to prevent a regexp overflow in case of an invalid version string. Fixes: #5557 Change-Id: Ia3e95a9f11f5a121d84474c97f6b122cf8d9c9cf --- diff --git a/doc/build/changelog/unreleased_14/5557.rst b/doc/build/changelog/unreleased_14/5557.rst new file mode 100644 index 0000000000..1fcae4f6d6 --- /dev/null +++ b/doc/build/changelog/unreleased_14/5557.rst @@ -0,0 +1,6 @@ +.. change:: + :tags: mssql, change + :tickets: 6503, 6253 + + Made improvements to the server version regexp used by the pymssql dialect + to prevent a regexp overflow in case of an invalid version string. diff --git a/lib/sqlalchemy/dialects/mssql/pymssql.py b/lib/sqlalchemy/dialects/mssql/pymssql.py index 4cc6c4696c..a8361e990b 100644 --- a/lib/sqlalchemy/dialects/mssql/pymssql.py +++ b/lib/sqlalchemy/dialects/mssql/pymssql.py @@ -94,7 +94,7 @@ class MSDialect_pymssql(MSDialect): def _get_server_version_info(self, connection): vers = connection.exec_driver_sql("select @@version").scalar() - m = re.match(r"Microsoft .*? - (\d+).(\d+).(\d+).(\d+)", vers) + m = re.match(r"Microsoft .*? - (\d+)\.(\d+)\.(\d+)\.(\d+)", vers) if m: return tuple(int(x) for x in m.group(1, 2, 3, 4)) else: