From 7c06dbffc3f037785bc9530e74771997f8d555fd Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Wed, 22 Dec 2010 18:55:50 +0000 Subject: [PATCH] bug fix (AttributeError: 'unicode' object has no attribute 'sort') --- lib/core/common.py | 5 +++++ plugins/dbms/mssqlserver/enumeration.py | 3 ++- plugins/generic/enumeration.py | 8 +++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/core/common.py b/lib/core/common.py index eb8543e78..82c2d4d02 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -1833,3 +1833,8 @@ def initTechnique(technique=None): warnMsg = "there is no injection data available for technique " warnMsg += "'%s'" % enumValueToNameLookup(PAYLOAD.TECHNIQUE, technique) logger.warn(warnMsg) + +def arrayizeValue(value): + if not isinstance(value, list): + value = [value] + return value diff --git a/plugins/dbms/mssqlserver/enumeration.py b/plugins/dbms/mssqlserver/enumeration.py index 9955c3f6c..08a306360 100644 --- a/plugins/dbms/mssqlserver/enumeration.py +++ b/plugins/dbms/mssqlserver/enumeration.py @@ -8,6 +8,7 @@ See the file 'doc/COPYING' for copying permission """ from lib.core.agent import agent +from lib.core.common import arrayizeValue from lib.core.common import getRange from lib.core.common import isNumPosStrValue from lib.core.data import conf @@ -63,7 +64,7 @@ class Enumeration(GenericEnumeration): value = inject.getValue(query, blind=False, error=False) if value: - kb.data.cachedTables[db] = value + kb.data.cachedTables[db] = arrayizeValue(value) if not kb.data.cachedTables and not conf.direct: for db in dbs: diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index 2c7996802..1b1dca4d2 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -11,6 +11,7 @@ import re import time from lib.core.agent import agent +from lib.core.common import arrayizeValue from lib.core.common import dataToStdout from lib.core.common import getRange from lib.core.common import getCompiledRegex @@ -158,7 +159,7 @@ class Enumeration: value = inject.getValue(query, blind=False, error=False) if value: - kb.data.cachedUsers = value + kb.data.cachedUsers = arrayizeValue(value) if not kb.data.cachedUsers and not conf.direct: infoMsg = "fetching number of database users" @@ -684,10 +685,7 @@ class Enumeration: value = inject.getValue(query, blind=False, error=False) if value: - if isinstance(value, basestring): - kb.data.cachedDbs = [value] - else: - kb.data.cachedDbs = value + kb.data.cachedDbs = arrayizeValue(value) if not kb.data.cachedDbs and not conf.direct: infoMsg = "fetching number of databases"