PyPy patch for testing module

This commit is contained in:
Miroslav Stampar 2021-09-29 23:01:32 +02:00
parent 08eeb0fd88
commit aeaa776ca9
4 changed files with 13 additions and 3 deletions

View File

@ -20,7 +20,7 @@ from thirdparty import six
from thirdparty.six import unichr as _unichr from thirdparty.six import unichr as _unichr
# sqlmap version (<major>.<minor>.<month>.<monthly commit>) # sqlmap version (<major>.<minor>.<month>.<monthly commit>)
VERSION = "1.5.9.27" VERSION = "1.5.9.28"
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable" TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34} TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE) VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)

View File

@ -433,7 +433,7 @@ def _setHashDB():
if os.path.exists(conf.hashDBFile): if os.path.exists(conf.hashDBFile):
if conf.flushSession: if conf.flushSession:
if conf.hashDB: if conf.hashDB:
conf.hashDB.close() conf.hashDB.closeAll()
try: try:
os.remove(conf.hashDBFile) os.remove(conf.hashDBFile)

View File

@ -157,7 +157,7 @@ def vulnTest():
for tag, value in (("<url>", url), ("<base>", base), ("<direct>", direct), ("<tmpdir>", tmpdir), ("<request>", request), ("<log>", log), ("<multiple>", multiple), ("<config>", config), ("<base64>", url.replace("id=1", "id=MZ=%3d"))): for tag, value in (("<url>", url), ("<base>", base), ("<direct>", direct), ("<tmpdir>", tmpdir), ("<request>", request), ("<log>", log), ("<multiple>", multiple), ("<config>", config), ("<base64>", url.replace("id=1", "id=MZ=%3d"))):
options = options.replace(tag, value) options = options.replace(tag, value)
cmd = "%s \"%s\" %s --batch --non-interactive --debug" % (sys.executable, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.py")), options) cmd = "%s \"%s\" %s --batch --non-interactive --debug" % (sys.executable if ' ' not in sys.executable else '"%s"' % sys.executable, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sqlmap.py")), options)
if "<tmpfile>" in cmd: if "<tmpfile>" in cmd:
handle, tmp = tempfile.mkstemp() handle, tmp = tempfile.mkstemp()

View File

@ -33,6 +33,7 @@ class HashDB(object):
self.filepath = filepath self.filepath = filepath
self._write_cache = {} self._write_cache = {}
self._cache_lock = threading.Lock() self._cache_lock = threading.Lock()
self._connections = []
def _get_cursor(self): def _get_cursor(self):
threadData = getCurrentThreadData() threadData = getCurrentThreadData()
@ -40,6 +41,7 @@ class HashDB(object):
if threadData.hashDBCursor is None: if threadData.hashDBCursor is None:
try: try:
connection = sqlite3.connect(self.filepath, timeout=3, isolation_level=None) connection = sqlite3.connect(self.filepath, timeout=3, isolation_level=None)
self._connections.append(connection)
threadData.hashDBCursor = connection.cursor() threadData.hashDBCursor = connection.cursor()
threadData.hashDBCursor.execute("CREATE TABLE IF NOT EXISTS storage (id INTEGER PRIMARY KEY, value TEXT)") threadData.hashDBCursor.execute("CREATE TABLE IF NOT EXISTS storage (id INTEGER PRIMARY KEY, value TEXT)")
connection.commit() connection.commit()
@ -66,6 +68,14 @@ class HashDB(object):
except: except:
pass pass
def closeAll(self):
for connection in self._connections:
try:
connection.commit()
connection.close()
except:
pass
@staticmethod @staticmethod
def hashKey(key): def hashKey(key):
key = getBytes(key if isinstance(key, six.text_type) else repr(key), errors="xmlcharrefreplace") key = getBytes(key if isinstance(key, six.text_type) else repr(key), errors="xmlcharrefreplace")