diff options
-rw-r--r-- | src/backend/libpq/pqpacket.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/backend/libpq/pqpacket.c b/src/backend/libpq/pqpacket.c index 5b2ce7e6ad3..eddeb97040a 100644 --- a/src/backend/libpq/pqpacket.c +++ b/src/backend/libpq/pqpacket.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/pqpacket.c,v 1.2 1996/11/06 08:48:31 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/pqpacket.c,v 1.3 1997/02/13 08:06:36 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -125,6 +125,22 @@ PacketReceive(Port *port, /* receive port */ } } else { /* + * This is an attempt to shield the Postmaster + * from mallicious attacks by placing tighter + * restrictions on the reported packet length. + * + * Check for negative packet length + */ + if ((buf->len) <= 0) { + return(STATUS_INVALID); + } + /* + * Check for oversize packet + */ + if ((ntohl(buf->len)) > max_size) { + return(STATUS_INVALID); + } + /* * great. got the header. now get the true length (including * header size). */ |