{"record":{"id":"b5eb504503132cc2","repo":"sqlmapproject/sqlmap","slug":"integer-read-failed-final-equality-check-s","errorCode":null,"errorMessage":"integer read failed final equality check: (%s) != %d","messagePattern":"integer read failed final equality check: \\((.+?)\\) != (.+?)","errorType":"exception","errorClass":"OracleUndecided","httpStatus":null,"severity":"error","filePath":"extra/esperanto/extraction.py","lineNumber":677,"sourceCode":"                raise OverflowError(\"integer below minimum -%d\" % cap)\n            hi, lo = -1, -2\n            while lo > -cap and not self._gtNum(expr, lo, HUGE):\n                hi, lo = lo, lo * 2\n            lo = max(lo, -cap - 1)\n        # invariant: expr > lo is True, expr > hi is False -> value is the transition in (lo, hi]\n        while hi - lo > 1:\n            mid = (lo + hi) // 2\n            if self._gtNum(expr, mid, HUGE):\n                lo = mid\n            else:\n                hi = mid\n        # FINAL INDEPENDENT CHECK: bisection trusts the comparator, which is only PROVEN on\n        # integer literals - a backend/WAF that honours '>' on literals but rewrites it (e.g. to\n        # '>=') for scalar-subquery / fn / arithmetic operands would converge off-by-one. Confirm\n        # the result with a direct equality against the ACTUAL expression; if it isn't decisively\n        # true the read is invalid -> fail closed (never return a silently-wrong count/length/id).\n        if not self._ask(\"(%s)=%d\" % (expr, hi)):\n            raise OracleUndecided(\"integer read failed final equality check: (%s) != %d\" % (expr, hi))\n        return hi\n\n    def extractBytes(self, expr):\n        \"\"\"Extract the exact bytes of a string/blob expression via a hex function.\n        Byte-exact and collation-independent (the hex string is ASCII [0-9A-F], so\n        whatever compare mode is active reads it cleanly). Returns None if no hex\n        function is available on the target.\"\"\"\n        if not self._ensureHexfn():\n            return None\n        # hex doubles the length; cap by maxbytes (a char can be several bytes),\n        # not maxlen\n        res = self.extractResult(self.dialect.hexfn[1].format(expr=expr),\n                                  _ceiling=self.maxbytes * 2, _verify=False)\n        hexstr = res.value\n        # STRICT: never clean corruption into believable bytes. reject a non-hex\n        # char, odd length, incomplete/truncated pull, or an unresolved marker.\n        if hexstr is None or not res.complete or res.truncated or res.warnings:\n            return None","sourceCodeStart":659,"sourceCodeEnd":695,"githubUrl":"https://github.com/sqlmapproject/sqlmap/blob/0a35b20e3953d341be6c7ac75ccb0b3362540c8d/extra/esperanto/extraction.py#L659-L695","documentation":"Error \"integer read failed final equality check: (%s) != %d\" thrown in sqlmapproject/sqlmap.","triggerScenarios":"Thrown at extra/esperanto/extraction.py:677 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0a35b20e3953d341be6c7ac75ccb0b3362540c8d","analyzedAt":"2026-08-26T23:02:52.002Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}