Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c24f1cc

Browse files
committed
some update
1 parent 60f04f0 commit c24f1cc

8 files changed

Lines changed: 45 additions & 39 deletions

File tree

lib/utils/timeout.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,26 @@
22

33
import threading
44

5-
def timeout(func, args=(), kwargs={}, timeout_duration=1, default=None):
5+
def timeout(func, args=(), kwargs={}, duration=1, default=None):
66
class InterruptableThread(threading.Thread):
77
def __init__(self):
88
threading.Thread.__init__(self)
9+
self.exceeded = False
10+
self.exceptionMsg = None
911
self.result = None
1012

1113
def run(self):
1214
try:
1315
self.result = func(*args, **kwargs)
14-
except:
16+
except Exception, msg:
17+
self.exceptionMsg = msg
1518
self.result = default
1619

1720
thread = InterruptableThread()
1821
thread.start()
19-
thread.join(timeout_duration)
20-
if thread.isAlive():
22+
thread.join(duration)
23+
self.exceeded = thread.isAlive()
24+
if self.exceeded:
2125
return default
2226
else:
2327
return thread.result

plugins/dbms/access/connector.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from lib.core.data import conf
3131
from lib.core.data import logger
3232
from lib.core.exception import sqlmapConnectionException
33+
from lib.utils.timeout import timeout
3334

3435
from plugins.generic.connector import Connector as GenericConnector
3536

@@ -60,11 +61,10 @@ def connect(self):
6061
self.connected()
6162

6263
def fetchall(self):
63-
try:
64-
return self.cursor.fetchall()
65-
except pyodbc.ProgrammingError, msg:
66-
logger.log(8, msg[1])
67-
return None
64+
retVal = timeout(func=self.cursor.fetchall, duration=conf.timeout, default=None)
65+
if self.exceptionMsg:
66+
logger.log(8, self.exceptionMsg[1])
67+
return retVal
6868

6969
def execute(self, query):
7070
logger.debug(query)

plugins/dbms/firebird/connector.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from lib.core.data import conf
3131
from lib.core.data import logger
3232
from lib.core.exception import sqlmapConnectionException
33+
from lib.utils.timeout import timeout
3334

3435
from plugins.generic.connector import Connector as GenericConnector
3536

@@ -59,11 +60,10 @@ def connect(self):
5960
self.connected()
6061

6162
def fetchall(self):
62-
try:
63-
return self.cursor.fetchall()
64-
except kinterbasdb.OperationalError, msg:
65-
logger.log(8, msg[1])
66-
return None
63+
retVal = timeout(func=self.cursor.fetchall, duration=conf.timeout, default=None)
64+
if self.exceptionMsg:
65+
logger.log(8, self.exceptionMsg[1])
66+
return retVal
6767

6868
def execute(self, query):
6969
logger.debug(query)

plugins/dbms/mssqlserver/connector.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from lib.core.data import conf
3232
from lib.core.data import logger
3333
from lib.core.exception import sqlmapConnectionException
34+
from lib.utils.timeout import timeout
3435

3536
from plugins.generic.connector import Connector as GenericConnector
3637

@@ -63,11 +64,10 @@ def connect(self):
6364
self.connected()
6465

6566
def fetchall(self):
66-
try:
67-
return self.cursor.fetchall()
68-
except (pymssql.ProgrammingError, pymssql.OperationalError, _mssql.MssqlDatabaseException), msg:
69-
logger.log(8, msg)
70-
return None
67+
retVal = timeout(func=self.cursor.fetchall, duration=conf.timeout, default=None)
68+
if self.exceptionMsg:
69+
logger.log(8, self.exceptionMsg)
70+
return retVal
7171

7272
def execute(self, query):
7373
logger.debug(query)

plugins/dbms/mysql/connector.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from lib.core.data import conf
3131
from lib.core.data import logger
3232
from lib.core.exception import sqlmapConnectionException
33+
from lib.utils.timeout import timeout
3334

3435
from plugins.generic.connector import Connector as GenericConnector
3536

@@ -59,11 +60,10 @@ def connect(self):
5960
self.connected()
6061

6162
def fetchall(self):
62-
try:
63-
return self.cursor.fetchall()
64-
except MySQLdb.ProgrammingError, msg:
65-
logger.log(8, msg[1])
66-
return None
63+
retVal = timeout(func=self.cursor.fetchall, duration=conf.timeout, default=None)
64+
if self.exceptionMsg:
65+
logger.log(8, self.exceptionMsg[1])
66+
return retVal
6767

6868
def execute(self, query):
6969
logger.debug(query)

plugins/dbms/oracle/connector.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@
2727
except ImportError, _:
2828
pass
2929

30+
from lib.core.data import conf
3031
from lib.core.data import logger
3132
from lib.core.exception import sqlmapConnectionException
33+
from lib.utils.timeout import timeout
3234

3335
from plugins.generic.connector import Connector as GenericConnector
3436

@@ -60,11 +62,10 @@ def connect(self):
6062
self.connected()
6163

6264
def fetchall(self):
63-
try:
64-
return self.cursor.fetchall()
65-
except cx_Oracle.InterfaceError, msg:
66-
logger.log(8, msg)
67-
return None
65+
retVal = timeout(func=self.cursor.fetchall, duration=conf.timeout, default=None)
66+
if self.exceptionMsg:
67+
logger.log(8, self.exceptionMsg)
68+
return retVal
6869

6970
def execute(self, query):
7071
logger.debug(query)

plugins/dbms/postgresql/connector.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@
2727
except ImportError, _:
2828
pass
2929

30+
from lib.core.data import conf
3031
from lib.core.data import logger
3132
from lib.core.exception import sqlmapConnectionException
33+
from lib.utils.timeout import timeout
3234

3335
from plugins.generic.connector import Connector as GenericConnector
3436

@@ -58,11 +60,10 @@ def connect(self):
5860
self.connected()
5961

6062
def fetchall(self):
61-
try:
62-
return self.cursor.fetchall()
63-
except psycopg2.ProgrammingError, msg:
64-
logger.log(8, msg)
65-
return None
63+
retVal = timeout(func=self.cursor.fetchall, duration=conf.timeout, default=None)
64+
if self.exceptionMsg:
65+
logger.log(8, self.exceptionMsg)
66+
return retVal
6667

6768
def execute(self, query):
6869
logger.debug(query)

plugins/dbms/sqlite/connector.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from lib.core.data import conf
3131
from lib.core.data import logger
3232
from lib.core.exception import sqlmapConnectionException
33+
from lib.utils.timeout import timeout
3334

3435
from plugins.generic.connector import Connector as GenericConnector
3536

@@ -60,11 +61,10 @@ def connect(self):
6061
self.connected()
6162

6263
def fetchall(self):
63-
try:
64-
return self.cursor.fetchall()
65-
except sqlite3.OperationalError, msg:
66-
logger.log(8, msg[0])
67-
return None
64+
retVal = timeout(func=self.cursor.fetchall, duration=conf.timeout, default=None)
65+
if self.exceptionMsg:
66+
logger.log(8, self.exceptionMsg[0])
67+
return retVal
6868

6969
def execute(self, query):
7070
logger.debug(query)

0 commit comments

Comments
 (0)