From 9b46540e00c4cb2d6b58d64cb10c5e0ce180fc3d Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Fri, 19 Apr 2019 14:36:23 +0200 Subject: [PATCH] Adding exit code (1) in case of sqlmap fail --- lib/core/settings.py | 2 +- lib/core/testing.py | 6 ++++-- sqlmap.py | 12 ++++++++---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/core/settings.py b/lib/core/settings.py index bcef70f3b..d4d6d1e2c 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -17,7 +17,7 @@ from lib.core.enums import DBMS_DIRECTORY_NAME from lib.core.enums import OS # sqlmap version (...) -VERSION = "1.3.4.31" +VERSION = "1.3.4.32" TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable" 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) diff --git a/lib/core/testing.py b/lib/core/testing.py index 844eb8cfd..0e13bb1ee 100644 --- a/lib/core/testing.py +++ b/lib/core/testing.py @@ -10,7 +10,6 @@ import doctest import os import re import shutil -import subprocess import sys import tempfile import threading @@ -54,7 +53,7 @@ def vulnTest(): """ retVal = True - count, length = 0, 5 + count, length = 0, 6 def _thread(): vulnserver.init(quiet=True) @@ -65,6 +64,7 @@ def vulnTest(): thread.start() for options, checks in ( + ("--version", ("1.", "#")), ("--flush-session", ("Type: boolean-based blind", "Type: time-based blind", "Type: UNION query", "back-end DBMS: SQLite", "3 columns")), ("--banner --schema --dump -T users --binary-fields=surname --where 'id>3'", ("banner: '3", "INTEGER", "TEXT", "id", "name", "surname", "2 entries", "6E616D6569736E756C6C")), ("--all", ("5 entries", "luther", "blisset", "fluffy", "ming", "NULL", "nameisnull")), @@ -85,6 +85,8 @@ def vulnTest(): else: logger.error("vuln test final result: FAILED") + return retVal + def smokeTest(): """ Runs the basic smoke testing of a program diff --git a/sqlmap.py b/sqlmap.py index 427796a58..dbefe65a0 100755 --- a/sqlmap.py +++ b/sqlmap.py @@ -159,13 +159,13 @@ def main(): # Postponed imports (faster start) if conf.smokeTest: from lib.core.testing import smokeTest - smokeTest() + os._exitcode = 1 - (smokeTest() or 0) elif conf.vulnTest: from lib.core.testing import vulnTest - vulnTest() + os._exitcode = 1 - (vulnTest() or 0) elif conf.liveTest: from lib.core.testing import liveTest - liveTest() + os._exitcode = 1 - (liveTest() or 0) else: from lib.controller.controller import start if conf.profile and PY2: @@ -176,6 +176,8 @@ def main(): try: start() except Exception as ex: + os._exitcode = 1 + if "can't start new thread" in getSafeExString(ex): errMsg = "unable to start new threads. Please check OS (u)limits" logger.critical(errMsg) @@ -409,7 +411,9 @@ if __name__ == "__main__": finally: # Reference: http://stackoverflow.com/questions/1635080/terminate-a-multi-thread-python-program if threading.activeCount() > 1: - os._exit(0) + os._exit(getattr(os, "_exitcode", 0)) + else: + sys.exit(getattr(os, "_exitcode", 0)) else: # cancelling postponed imports (because of Travis CI checks) from lib.controller.controller import start