mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-12-07 05:01:30 +00:00
fix for a bug reported by Ulisses Castro (Too many open files) - also, added an important caching mechanism with thread safe logic
This commit is contained in:
@@ -1239,13 +1239,20 @@ def getConsoleWidth(default=80):
|
||||
return width if width else default
|
||||
|
||||
def parseXmlFile(xmlFile, handler):
|
||||
checkFile(xmlFile)
|
||||
xfile = codecs.open(xmlFile, 'rb', conf.dataEncoding)
|
||||
content = xfile.read()
|
||||
stream = StringIO(content)
|
||||
if xmlFile not in kb.cache.content:
|
||||
if conf.parseLock:
|
||||
conf.parseLock.acquire()
|
||||
if xmlFile not in kb.cache.content:
|
||||
checkFile(xmlFile)
|
||||
xfile = codecs.open(xmlFile, 'rb', conf.dataEncoding)
|
||||
content = xfile.read()
|
||||
kb.cache.content[xmlFile] = content
|
||||
xfile.close()
|
||||
if conf.parseLock:
|
||||
conf.parseLock.release()
|
||||
stream = StringIO(kb.cache.content[xmlFile])
|
||||
parse(stream, handler)
|
||||
stream.close()
|
||||
xfile.close()
|
||||
|
||||
def readXmlFile(xmlFile):
|
||||
checkFile(xmlFile)
|
||||
|
||||
@@ -993,6 +993,7 @@ def __setConfAttributes():
|
||||
conf.outputPath = None
|
||||
conf.paramDict = {}
|
||||
conf.parameters = {}
|
||||
conf.parseLock = None
|
||||
conf.path = None
|
||||
conf.port = None
|
||||
conf.redirectHandled = False
|
||||
@@ -1022,6 +1023,7 @@ def __setKnowledgeBaseAttributes():
|
||||
kb.bannerFp = advancedDict()
|
||||
|
||||
kb.cache = advancedDict()
|
||||
kb.cache.content = {}
|
||||
kb.cache.regex = {}
|
||||
|
||||
kb.commonOutputs = None
|
||||
|
||||
Reference in New Issue
Block a user