fix for one of those more complex bugs (comparison was returning None while original page and/or page template were already had already DBMS error inside)

This commit is contained in:
Miroslav Stampar
2010-12-24 12:13:48 +00:00
parent aab14fa2d3
commit 2c23a59ba5
9 changed files with 52 additions and 32 deletions

View File

@@ -58,7 +58,7 @@ def comparison(page, headers=None, getSeqMatcher=False, pageLength=None):
return re.search(conf.regexp, page, re.I | re.M) is not None
# In case of an DBMS error page return None
if wasLastRequestDBMSError():
if kb.errorIsNone and wasLastRequestDBMSError():
return None
# Dynamic content lines to be excluded before comparison

View File

@@ -40,6 +40,7 @@ from lib.core.enums import PLACE
from lib.core.exception import sqlmapConnectionException
from lib.core.exception import sqlmapSyntaxException
from lib.core.settings import MIN_TIME_RESPONSES
from lib.core.threads import getCurrentThreadData
from lib.request.basic import decodePage
from lib.request.basic import forgeHeaders
from lib.request.basic import parseResponse

View File

@@ -13,11 +13,12 @@ from lib.core.data import kb
from lib.request.connect import Connect as Request
def getPageTemplate(payload, place):
retVal = kb.originalPage
retVal = kb.originalPage, kb.errorIsNone
if payload and place:
if (payload, place) not in kb.pageTemplates:
kb.pageTemplates[(payload, place)], _ = Request.queryPage(payload, place, content=True)
page, _ = Request.queryPage(payload, place, content=True)
kb.pageTemplates[(payload, place)] = (page, kb.lastParserStatus is None)
retVal = kb.pageTemplates[(payload, place)]