From 5a979f76674394ea1b0e460b17b1fc3d8557f91f Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Thu, 19 May 2011 17:35:33 +0000 Subject: [PATCH] minor bug fix for empty colList; also added "do you want to use LIKE" (LIKE is default) question when -C used --- plugins/generic/enumeration.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index 5830a7c59..64afa842b 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -1026,8 +1026,19 @@ class Enumeration: infoMsg = "fetching columns " if len(colList) > 0: - condQuery = " AND (%s)" % " OR ".join("%s LIKE '%%%s%%'" % (condition, unsafeSQLIdentificatorNaming(col)) for col in colList) - infoMsg += "like '%s' " % ", ".join(unsafeSQLIdentificatorNaming(col) for col in colList) + message = "do you want to use LIKE operator to " + message += "retrieve column names similar to the " + message += "ones provided with the -C option? [Y/n]" + + test = readInput(message, default="Y") + + if not (isinstance(test, basestring) and test.upper() == "N"): + condQuery = " AND (%s)" % " OR ".join("%s LIKE '%%%s%%'" % (condition, unsafeSQLIdentificatorNaming(col)) for col in colList) + infoMsg += "LIKE '%s' " % ", ".join(unsafeSQLIdentificatorNaming(col) for col in colList) + else: + condQuery = " AND (%s)" % " OR ".join("%s = '%s'" % (condition, unsafeSQLIdentificatorNaming(col)) for col in colList) + infoMsg += "'%s' " % ", ".join(unsafeSQLIdentificatorNaming(col) for col in colList) + else: condQuery = "" @@ -1446,7 +1457,8 @@ class Enumeration: try: if not unsafeSQLIdentificatorNaming(conf.db) in kb.data.cachedColumns \ or unsafeSQLIdentificatorNaming(tbl) not in \ - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)]: + kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)] \ + or not kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)][unsafeSQLIdentificatorNaming(tbl)]: warnMsg = "unable to enumerate the columns for table " warnMsg += "'%s' on database" % unsafeSQLIdentificatorNaming(tbl) warnMsg += " '%s', skipping" % unsafeSQLIdentificatorNaming(conf.db) @@ -1460,7 +1472,7 @@ class Enumeration: infoMsg = "fetching" if conf.col: - infoMsg += " columns '%s'" % colString + infoMsg += " column(s) '%s'" % colString infoMsg += " entries for table '%s'" % unsafeSQLIdentificatorNaming(tbl) infoMsg += " on database '%s'" % unsafeSQLIdentificatorNaming(conf.db) logger.info(infoMsg)