actual implementation of issue #75, still some work to do

This commit is contained in:
Bernardo Damele 2012-07-12 01:16:00 +01:00
parent 3a94953ae2
commit ee3aeb8dcf
2 changed files with 9 additions and 1 deletions

View File

@ -798,6 +798,9 @@ class Agent:
return unescaper.unescape(lengthExpr) return unescaper.unescape(lengthExpr)
def forgeQueryOutputLengthZero(self, expression):
return self.forgeCaseStatement(self.forgeQueryOutputLength(expression))
def forgeCaseStatement(self, expression): def forgeCaseStatement(self, expression):
""" """
Take in input a query string and return its CASE statement query Take in input a query string and return its CASE statement query

View File

@ -1740,6 +1740,11 @@ class Enumeration:
elif Backend.isDbms(DBMS.FIREBIRD): elif Backend.isDbms(DBMS.FIREBIRD):
query = rootQuery.blind.query % (index, column, tbl) query = rootQuery.blind.query % (index, column, tbl)
# Skip enumeration of cells that have a value length of 0
if not inject.checkBooleanExpression(agent.forgeQueryOutputLengthZero(query)):
logger.debug(query)
value = ""
else:
value = inject.getValue(query, inband=False, error=False, dump=True) value = inject.getValue(query, inband=False, error=False, dump=True)
lengths[column] = max(lengths[column], len(value) if value else 0) lengths[column] = max(lengths[column], len(value) if value else 0)