sqlmapproject/sqlmap · error · OracleUndecided

oracle vote undecided: %s (%d true / %d false)

Error message

oracle vote undecided: %s (%d true / %d false)

What it means

Error "oracle vote undecided: %s (%d true / %d false)" thrown in sqlmapproject/sqlmap.

Source

Thrown at extra/esperanto/oracle.py:111

        while (yes + no) < samples and tries < samples + self.quorum + 2:
            tries += 1
            r = self._probe(condition)
            if r is None:
                self._errors += 1
                continue
            yes, no = (yes + 1, no) if r else (yes, no + 1)
            if yes >= self.quorum or no >= self.quorum:
                break
        if self.verbose:
            state = "T" if yes >= self.quorum else ("f" if no >= self.quorum else "E")
            print("  [%s %d:%d] %s" % (state, yes, no, condition))
        if yes >= self.quorum:
            return True
        if no >= self.quorum:
            return False
        if self._probing:               # candidate rung the vote couldn't settle -> unusable, not fatal
            return False
        raise OracleUndecided("oracle vote undecided: %s (%d true / %d false)" % (condition, yes, no))

    def _sub(self, expr, pos, length):
        # pos is always passed 1-based; adjust for a 0-based dialect if discovered
        p = pos if self.dialect.substring.get("index_base", 1) == 1 else pos - 1
        return self.dialect.substring[1].format(expr=expr, pos=p, len=length)

    def _len(self, expr):
        return self.dialect.length[1].format(expr=expr)

    def _sanity(self):
        return self._ask("1=1") and not self._ask("1=2") and \
               self._ask("'a'='a'") and not self._ask("'a'='b'")

    def _exists(self, source, column="1", alias=None):
        # does `source` (a table/catalog) - and optionally `column` in it - resolve?
        # WITHOUT COUNT (which a WAF may filter): a scalar subquery over it is NULL when
        # it resolves (WHERE 1=0 -> 0 rows) and ERRORS -> False when it doesn't. Works
        # for empty tables too. `column` is passed BARE so a nonexistent one errors,

View on GitHub (pinned to 0a35b20e39)

When it happens

Trigger: Thrown at extra/esperanto/oracle.py:111 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of sqlmapproject/sqlmap@0a35b20e39 (2026-08-26). Data as JSON: /api/errors/b14b1d9a04bb2885. Report an issue: GitHub.