fix for a bug noticed in a multi target run (log files weren't saved properly - removed buffering as it didn't produce any noticeable results)

This commit is contained in:
Miroslav Stampar 2012-06-05 22:40:55 +00:00
parent f94ebe3107
commit 058a9c59a2
4 changed files with 5 additions and 24 deletions

View File

@ -34,7 +34,6 @@ from lib.core.data import conf
from lib.core.data import kb
from lib.core.data import logger
from lib.core.data import paths
from lib.core.dump import dumper
from lib.core.common import unhandledExceptionMessage
from lib.core.exception import exceptionsTuple
from lib.core.exception import sqlmapSilentQuitException
@ -123,8 +122,6 @@ def main():
except KeyboardInterrupt:
pass
dumper.flush()
# Reference: http://stackoverflow.com/questions/1635080/terminate-a-multi-thread-python-program
if conf.get("threads", 0) > 1 or conf.get("dnsServer", None):
os._exit(0)

View File

@ -15,6 +15,9 @@ David Alvarez <david.alvarez.s@gmail.com>
Sergio Alves <sergioalexandre.alves@gmail.com>
for reporting a bug
Thomas Anderson <darkc0de@live.com.ph>
for reporting a bug
Chip Andrews <chip@sqlsecurity.com>
for his excellent work maintaining the SQL Server versions database
at SQLSecurity.com and permission to implement the update feature

View File

@ -30,7 +30,6 @@ from lib.core.enums import DBMS
from lib.core.exception import sqlmapValueException
from lib.core.replication import Replication
from lib.core.settings import BLANK
from lib.core.settings import BUFFERED_LOG_SIZE
from lib.core.settings import NULL
from lib.core.settings import TRIM_STDOUT_DUMP_SIZE
from lib.core.settings import UNICODE_ENCODING
@ -45,7 +44,6 @@ class Dump:
def __init__(self):
self._outputFile = None
self._outputFP = None
self._outputBP = None
self._lock = threading.Lock()
def _write(self, data, n=True, console=True):
@ -56,41 +54,27 @@ class Dump:
if kb.get("multiThreadMode"):
self._lock.acquire()
self._outputBP.write(text)
if self._outputBP.tell() > BUFFERED_LOG_SIZE:
self.flush()
self._outputFP.write(text)
if kb.get("multiThreadMode"):
self._lock.release()
kb.dataOutputFlag = True
def flush(self):
if self._outputBP and self._outputFP and self._outputBP.tell() > 0:
_ = self._outputBP.getvalue()
self._outputBP.truncate(0)
self._outputFP.write(_)
def _formatString(self, inpStr):
return restoreDumpMarkedChars(getUnicode(inpStr))
def setOutputFile(self):
self._outputFile = "%s%slog" % (conf.outputPath, os.sep)
self._outputFP = codecs.open(self._outputFile, "ab", UNICODE_ENCODING)
self._outputBP = StringIO.StringIO()
def getOutputFile(self):
self.flush()
return self._outputFile
def string(self, header, data, sort=True):
if isinstance(data, (list, tuple, set)):
self.lister(header, data, sort)
return
if data:
elif data:
data = self._formatString(getUnicode(data))
if data[-1] == '\n':

View File

@ -467,9 +467,6 @@ SLOW_ORDER_COUNT_THRESHOLD = 10000
# Give up on hash recognition if nothing was found in first given number of rows
HASH_RECOGNITION_QUIT_THRESHOLD = 10000
# Size of a buffer used for log file output
BUFFERED_LOG_SIZE = 10000
# Maximum number of redirections to any single URL - this is needed because of the state that cookies introduce
MAX_SINGLE_URL_REDIRECTIONS = 4