MCPcopy Index your code
hub / github.com/sqlmapproject/sqlmap / forgeQueryOutputLength

Method forgeQueryOutputLength

lib/core/agent.py:1172–1190  ·  view source on GitHub ↗
(self, expression)

Source from the content-addressed store, hash-verified

1170 return limitedQuery
1171
1172 def forgeQueryOutputLength(self, expression):
1173 lengthQuery = queries[Backend.getIdentifiedDbms()].length.query
1174 select = re.search(r"\ASELECT\s+", expression, re.I)
1175 selectFrom = re.search(r"\ASELECT\s+(.+)\s+FROM\s+(.+)", expression, re.I)
1176 selectTopExpr = re.search(r"\ASELECT\s+TOP\s+[\d]+\s+(.+?)\s+FROM", expression, re.I)
1177 selectMinMaxExpr = re.search(r"\ASELECT\s+(MIN|MAX)\(.+?\)\s+FROM", expression, re.I)
1178
1179 _, _, _, _, _, _, fieldsStr, _ = self.getFields(expression)
1180
1181 if Backend.getIdentifiedDbms() in (DBMS.MCKOI,) and selectFrom:
1182 lengthExpr = "SELECT %s FROM %s" % (lengthQuery % selectFrom.group(1), selectFrom.group(2))
1183 elif selectTopExpr or selectMinMaxExpr:
1184 lengthExpr = lengthQuery % ("(%s)" % expression)
1185 elif select:
1186 lengthExpr = expression.replace(fieldsStr, lengthQuery % fieldsStr, 1)
1187 else:
1188 lengthExpr = lengthQuery % expression
1189
1190 return unescaper.escape(lengthExpr)
1191
1192 def forgeCaseStatement(self, expression):
1193 """

Callers 1

queryOutputLengthFunction · 0.80

Calls 5

getFieldsMethod · 0.95
getIdentifiedDbmsMethod · 0.80
searchMethod · 0.45
replaceMethod · 0.45
escapeMethod · 0.45

Tested by

no test coverage detected