pgsql/parser: fix response message length

Some backend messages can be the shortest pgsql length possible,
4 bytes, but the parser expectd all messages to be longer than that.

Related to
Bug #5524
pull/12625/head
Juliana Fajardini 1 year ago committed by Victor Julien
parent eeb2166a5a
commit 24375a1fef

@ -727,7 +727,7 @@ pub fn parse_request(i: &[u8]) -> IResult<&[u8], PgsqlFEMessage> {
b'X' => parse_terminate_message(i)?, b'X' => parse_terminate_message(i)?,
_ => { _ => {
let (i, identifier) = be_u8(i)?; let (i, identifier) = be_u8(i)?;
let (i, length) = verify(be_u32, |&x| x > PGSQL_LENGTH_FIELD)(i)?; let (i, length) = verify(be_u32, |&x| x >= PGSQL_LENGTH_FIELD)(i)?;
let (i, payload) = take(length - PGSQL_LENGTH_FIELD)(i)?; let (i, payload) = take(length - PGSQL_LENGTH_FIELD)(i)?;
let unknown = PgsqlFEMessage::UnknownMessageType(RegularPacket { let unknown = PgsqlFEMessage::UnknownMessageType(RegularPacket {
identifier, identifier,

Loading…
Cancel
Save