From 2fb8bf3b6a8731f8b6f8a6ba551976e97e3c8f66 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Wed, 2 Jun 2010 12:31:36 +0000 Subject: [PATCH] more dump/unicode cleanup --- lib/core/common.py | 6 ++++++ lib/core/dump.py | 9 +++++---- lib/core/xmldump.py | 23 +++++++++-------------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/lib/core/common.py b/lib/core/common.py index cfaed3eb6..02cd29053 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -1352,6 +1352,12 @@ def getCommonStart(strings=[]): return retVal +def getUnicode(value): + if isinstance(value, basestring): + return value if isinstance(value, unicode) else unicode(value, conf.dataEncoding) + else: + return unicode(value) + def getBruteUnicode(string): retVal = unicode() for char in string: diff --git a/lib/core/dump.py b/lib/core/dump.py index d2a71e6ce..47087687c 100644 --- a/lib/core/dump.py +++ b/lib/core/dump.py @@ -27,6 +27,7 @@ import re import os from lib.core.common import dataToDumpFile +from lib.core.common import getUnicode from lib.core.data import conf from lib.core.data import logger @@ -54,7 +55,7 @@ class Dump: conf.loggedToOut = True def __formatString(self, string): - string = unicode(string) + string = getUnicode(string) string = string.replace("__NEWLINE__", "\n").replace("__TAB__", "\t") string = string.replace("__START__", "").replace("__STOP__", "") string = string.replace("__DEL__", ", ") @@ -71,7 +72,7 @@ class Dump: return - data = unicode(data) + data = getUnicode(data) if data: data = self.__formatString(data) @@ -99,7 +100,7 @@ class Dump: if isinstance(element, basestring): self.__write("[*] %s" % element) elif isinstance(element, (list, tuple, set)): - self.__write("[*] " + ", ".join(unicode(e) for e in element)) + self.__write("[*] " + ", ".join(getUnicode(e) for e in element)) if elements: self.__write("") @@ -318,7 +319,7 @@ class Dump: if column != "__infos__": info = tableValues[column] - value = unicode(info["values"][i]) if type(info["values"][i]) != unicode else info["values"][i] + value = getUnicode(info["values"][i]) if re.search("^[\ *]*$", value): value = "NULL" diff --git a/lib/core/xmldump.py b/lib/core/xmldump.py index 7197cb2a4..eeeca6251 100644 --- a/lib/core/xmldump.py +++ b/lib/core/xmldump.py @@ -7,6 +7,7 @@ import re import xml.sax.saxutils as saxutils from xml.dom.minidom import Document +from lib.core.common import getUnicode from lib.core.data import conf from lib.core.data import logger from lib.core.exception import sqlmapFilePathException @@ -130,22 +131,16 @@ class XMLDump: if attrValue is None : attr.nodeValue = u'' else : - attr.nodeValue = self.__getUnicode(attrValue) + attr.nodeValue = getUnicode(attrValue) return attr def __formatString(self, string): - string = self.__getUnicode(string) + string = getUnicode(string) string = string.replace("__NEWLINE__", "\n").replace("__TAB__", "\t") string = string.replace("__START__", "").replace("__STOP__", "") string = string.replace("__DEL__", ", ") return string - def __getUnicode(self, value): - if isinstance(value, basestring): - return value if isinstance(value, unicode) else unicode(value, "utf-8") - else: - return unicode(value) - def string(self, header, data, sort=True): ''' Adds string element to the xml. @@ -196,7 +191,7 @@ class XMLDump: for e in element : memberElemStr = self.__doc.createElement(MEMBER_ELEM) memberElemStr.setAttributeNode(self.__createAttribute(TYPE_ATTR, "string")) - memberElemStr.appendChild(self.__createTextNode(self.__getUnicode(e))) + memberElemStr.appendChild(self.__createTextNode(getUnicode(e))) memberElem.appendChild(memberElemStr) listsElem = self.__getRootChild(LSTS_ELEM_NAME) if not(listsElem): @@ -250,7 +245,7 @@ class XMLDump: Adds information to the xml that indicates whether the user has DBA privileges ''' isDBAElem = self.__doc.createElement(IS_DBA_ELEM_NAME) - isDBAElem.setAttributeNode(self.__createAttribute(VALUE_ATTR, self.__getUnicode(isDBA))) + isDBAElem.setAttributeNode(self.__createAttribute(VALUE_ATTR, getUnicode(isDBA))) self.__addToRoot(isDBAElem) def users(self,users): @@ -502,7 +497,7 @@ class XMLDump: ''' if ((self.__outputFP is not None) and not(self.__outputFP.closed)): statusElem = self.__doc.createElement(STATUS_ELEM_NAME) - statusElem.setAttributeNode(self.__createAttribute(SUCESS_ATTR,self.__getUnicode(resultStatus))) + statusElem.setAttributeNode(self.__createAttribute(SUCESS_ATTR,getUnicode(resultStatus))) if not(resultStatus) : errorElem = self.__doc.createElement(ERROR_ELEM_NAME) @@ -510,13 +505,13 @@ class XMLDump: if (isinstance(resultMsg, Exception)): errorElem.setAttributeNode(self.__createAttribute(TYPE_ATTR, type(resultMsg).__name__)) else : - errorElem.setAttributeNode(self.__createAttribute(TYPE_ATTR, UNHANDLED_PROBLEM_TYPE)) + errorElem.setAttributeNode(self.__createAttribute(TYPE_ATTR, UNHANDLED_PROBLEM_TYPE)) - errorElem.appendChild(self.__createTextNode(self.__getUnicode(resultMsg))) + errorElem.appendChild(self.__createTextNode(getUnicode(resultMsg))) statusElem.appendChild(errorElem) self.__addToRoot(statusElem) - self.__write(self.__doc.toprettyxml(encoding=ENCODING)) + self.__write(self.__doc.toprettyxml(encoding=ENCODING)) self.__outputFP.close() def closeDumper(status, msg=""):