From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: libpq: Correct processing of startup response messages |
Date: | 2022-11-17 13:40:18 |
Message-ID: | E1ovf7q-000bXS-1z@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
libpq: Correct processing of startup response messages
After sending a startup message, libpq expects either an error
response ('E') or an authentication request ('R'). Before processing
the message, it ensures it has read enough bytes to correspond to the
length specified in the message. However, when processing the 'R'
message, if an EOF status is returned it loops back waiting for more
input, even though we already checked that we have enough input. In
this particular case, this is probably not reachable anyway, because
other code ensures we have enough bytes for an authentication request
message, but the code is wrong and misleading. In the more general
case, processing a faulty message could result in an EOF status, which
would then result in an infinite loop waiting for the end of a message
that will never come. The correction is to make this an error.
Reported-by: Jacob Champion <jchampion(at)timescale(dot)com>
Discussion: https://www.postgresql.org/message-id/flat/f9c7862f-b864-8ef7-a861-c4638c83e209(at)enterprisedb(dot)com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/dce92e59b1a9ff8401a660a1ac448ea37d498284
Modified Files
--------------
src/interfaces/libpq/fe-connect.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2022-11-17 14:47:56 | pgsql: libpq: Handle NegotiateProtocolVersion message |
Previous Message | Daniel Gustafsson | 2022-11-17 12:18:09 | pgsql: Fix wording in comment |