sqlmapproject/sqlmap · error · InterfaceError
invalid Firebird length
Error message
invalid Firebird length (%d)
What it means
A length read from the Firebird wire stream is negative or implausibly large, so recv() refuses to read it: a negative length would return short data and a huge one would block reading garbage. Every length here (response buffers, status strings, per-value sizes) comes off the wire, so this means a corrupt or desynchronized stream.
Solutions
- Drop and re-establish the connection; the stream cannot be resynchronized mid-message
- Compare the Firebird server protocol version against the implemented one
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at extra/dbwire/firebird.py:307 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/611340515083d0f8.
Report an issue: GitHub.
Appendix: source
Thrown at extra/dbwire/firebird.py:307
self._rc = self._wc = None
def set_ciphers(self, rc, wc):
self._rc, self._wc = rc, wc
def send(self, data):
try:
self._sock.sendall(self._wc.translate(data) if self._wc else data)
except (socket.error, OSError) as ex:
raise connection_lost(ex)
def _recv_raw(self, n):
return recvn(self._sock, n)
def recv(self, n, align=False):
# every length here comes off the wire (response buffers, status strings, per-value lengths): a
# negative one would silently return short data, a huge one would read until memory ran out
if n < 0 or n > _MAX_MESSAGE_LENGTH:
raise InterfaceError("invalid Firebird length (%d)" % n)
total = n + ((4 - n % 4) % 4) if align else n
data = self._recv_raw(total)
if self._rc:
data = self._rc.translate(data)
return data[:n]
def recv_int(self):
return struct.unpack("!i", self.recv(4))[0]
def recv_bytes(self):
return self.recv(self.recv_int(), align=True)
def close(self):
try:
self._sock.close()
except Exception:
pass
View on GitHub (pinned to 0a35b20e39)