From a3e3387113e92e9de9bb9dd17d17bb5f0d9fc6a5 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Mon, 24 Jan 2011 11:04:32 +0000 Subject: [PATCH] fix for proper Firebird resume of version --- lib/core/session.py | 16 +++------------- plugins/dbms/firebird/fingerprint.py | 22 ++++++++++++++++------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/core/session.py b/lib/core/session.py index 1d69fcd01..0609edf24 100644 --- a/lib/core/session.py +++ b/lib/core/session.py @@ -23,10 +23,7 @@ from lib.core.datatype import injectionDict from lib.core.enums import PAYLOAD from lib.core.enums import PLACE from lib.core.settings import METADB_SUFFIX -from lib.core.settings import MSSQL_ALIASES -from lib.core.settings import MYSQL_ALIASES -from lib.core.settings import PGSQL_ALIASES -from lib.core.settings import ORACLE_ALIASES +from lib.core.settings import SUPPORTED_DBMS from lib.core.settings import UNKNOWN_DBMS_VERSION def safeFormatString(value): @@ -79,7 +76,6 @@ def setDbms(dbms): base as fingerprint. @type dbms: C{str} """ - condition = ( not kb.resumedQueries or ( kb.resumedQueries.has_key(conf.url) and @@ -89,10 +85,7 @@ def setDbms(dbms): if condition: dataToSessionFile("[%s][%s][%s][DBMS][%s]\n" % (conf.url, kb.injection.place, safeFormatString(conf.parameters[kb.injection.place]), safeFormatString(dbms))) - firstRegExp = "(%s|%s|%s|%s)" % ("|".join([alias for alias in MSSQL_ALIASES]), - "|".join([alias for alias in MYSQL_ALIASES]), - "|".join([alias for alias in PGSQL_ALIASES]), - "|".join([alias for alias in ORACLE_ALIASES])) + firstRegExp = "(%s)" % ("|".join([alias for alias in SUPPORTED_DBMS])) dbmsRegExp = re.search("^%s" % firstRegExp, dbms, re.I) if dbmsRegExp: @@ -186,10 +179,7 @@ def resumeConfKb(expression, url, value): logMsg += "from session file" logger.info(logMsg) - firstRegExp = "(%s|%s|%s|%s)" % ("|".join([alias for alias in MSSQL_ALIASES]), - "|".join([alias for alias in MYSQL_ALIASES]), - "|".join([alias for alias in PGSQL_ALIASES]), - "|".join([alias for alias in ORACLE_ALIASES])) + firstRegExp = "(%s)" % ("|".join([alias for alias in SUPPORTED_DBMS])) dbmsRegExp = re.search("%s ([\d\.]+)" % firstRegExp, dbms) if dbmsRegExp: diff --git a/plugins/dbms/firebird/fingerprint.py b/plugins/dbms/firebird/fingerprint.py index 5b4ac6dc0..20cef4513 100644 --- a/plugins/dbms/firebird/fingerprint.py +++ b/plugins/dbms/firebird/fingerprint.py @@ -22,6 +22,7 @@ from lib.core.enums import DBMS from lib.core.session import setDbms from lib.core.settings import FIREBIRD_ALIASES from lib.core.settings import METADB_SUFFIX +from lib.core.settings import UNKNOWN_DBMS_VERSION from lib.request import inject from lib.request.connect import Connect as Request @@ -44,10 +45,11 @@ class Fingerprint(GenericFingerprint): if dbmsOsFp: value += "%s\n" % dbmsOsFp - value += "back-end DBMS: " + value += "back-end DBMS: " + actVer = format.getDbms() if not conf.extensiveFp: - value += DBMS.FIREBIRD + value += actVer return value actVer = format.getDbms() + " (%s)" % (self.__dialectCheck()) @@ -106,13 +108,20 @@ class Fingerprint(GenericFingerprint): return retVal def checkDbms(self): - if not conf.extensiveFp and (backend.isDbmsWithin(FIREBIRD_ALIASES) or conf.dbms in FIREBIRD_ALIASES): - setDbms(DBMS.FIREBIRD) + if not conf.extensiveFp and (backend.isDbmsWithin(FIREBIRD_ALIASES) \ + or conf.dbms in FIREBIRD_ALIASES) and backend.getVersion() and \ + backend.getVersion() != UNKNOWN_DBMS_VERSION: + v = backend.getVersion().replace(">", "") + v = v.replace("=", "") + v = v.replace(" ", "") + + backend.setVersion(v) + + setDbms("%s %s" % (DBMS.FIREBIRD, backend.getVersion())) self.getBanner() - if not conf.extensiveFp: - return True + return True logMsg = "testing %s" % DBMS.FIREBIRD logger.info(logMsg) @@ -141,6 +150,7 @@ class Fingerprint(GenericFingerprint): if version is not None: backend.setVersion(version) + setDbms("%s %s" % (DBMS.FIREBIRD, version)) self.getBanner()