Fix low-risk potential denial of service against RADIUS login.
authorMagnus Hagander
Fri, 15 Oct 2010 14:59:12 +0000 (16:59 +0200)
committerMagnus Hagander
Fri, 15 Oct 2010 14:59:12 +0000 (16:59 +0200)
commit24d446b56959f4449b5c78520a954ea0bbb517b8
treeddc29c4e2b92c860f64dd66d36b2c0fd87715fb9
parent4bc8d9dc90bb98b915d9900a7c1a9482214814bb
Fix low-risk potential denial of service against RADIUS login.

Corrupt RADIUS responses were treated as errors and not ignored
(which the RFC2865 states they should be). This meant that a
user with unfiltered access to the network of the PostgreSQL
or RADIUS server could send a spoofed RADIUS response
to the PostgreSQL server causing it to reject a valid login,
provided the attacker could also guess (or brute-force) the
correct port number.

Fix is to simply retry the receive in a loop until the timeout
has expired or a valid (signed by the correct RADIUS server)
packet arrives.

Reported by Alan DeKok in bug #5687.
src/backend/libpq/auth.c