From 31d7021d4c89d7fc1e83c6b82cd68679f85b4844 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Mon, 4 Apr 2016 12:25:07 +0200 Subject: [PATCH] Fixes #1794 --- lib/core/common.py | 11 ++++++++--- lib/core/dump.py | 5 +++-- lib/core/settings.py | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/core/common.py b/lib/core/common.py index f90a94ed7..c7673ca16 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -1023,14 +1023,17 @@ def getHeader(headers, key): break return retVal -def checkFile(filename): +def checkFile(filename, raiseOnError=True): """ Checks for file existence and readability """ valid = True - if filename is None or not os.path.isfile(filename): + try: + if filename is None or not os.path.isfile(filename): + valid = False + except UnicodeError: valid = False if valid: @@ -1040,9 +1043,11 @@ def checkFile(filename): except: valid = False - if not valid: + if not valid and raiseOnError: raise SqlmapSystemException("unable to read file '%s'" % filename) + return valid + def banner(): """ This function prints sqlmap banner with its version diff --git a/lib/core/dump.py b/lib/core/dump.py index e56defdd7..ba5864690 100644 --- a/lib/core/dump.py +++ b/lib/core/dump.py @@ -13,6 +13,7 @@ import tempfile import threading from lib.core.common import Backend +from lib.core.common import checkFile from lib.core.common import dataToDumpFile from lib.core.common import dataToStdout from lib.core.common import getSafeExString @@ -434,7 +435,7 @@ class Dump(object): dumpDbPath = tempDir dumpFileName = os.path.join(dumpDbPath, "%s.%s" % (unsafeSQLIdentificatorNaming(table), conf.dumpFormat.lower())) - if not os.path.isfile(dumpFileName): + if not checkFile(dumpFileName, False): try: openFile(dumpFileName, "w+b").close() except SqlmapSystemException: @@ -449,7 +450,7 @@ class Dump(object): else: dumpFileName = os.path.join(dumpDbPath, "%s.%s" % (_, conf.dumpFormat.lower())) - appendToFile = os.path.isfile(dumpFileName) and any((conf.limitStart, conf.limitStop)) + appendToFile = any((conf.limitStart, conf.limitStop)) and checkFile(dumpFileName, False) dumpFP = openFile(dumpFileName, "wb" if not appendToFile else "ab", buffering=DUMP_FILE_BUFFER_SIZE) count = int(tableValues["__infos__"]["count"]) diff --git a/lib/core/settings.py b/lib/core/settings.py index 15b98e0da..2ed5a7eff 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -20,7 +20,7 @@ from lib.core.enums import OS from lib.core.revision import getRevisionNumber # sqlmap version (...) -VERSION = "1.0.3.10" +VERSION = "1.0.3.11" REVISION = getRevisionNumber() STABLE = VERSION.count('.') <= 2 VERSION_STRING = "sqlmap/%s#%s" % (VERSION, "stable" if STABLE else "dev")