diff --git a/src/backend/libpq/pqpacket.c b/src/backend/libpq/pqpacket.c
index 5b2ce7e6ad38992420b3566ad86226d8a68f89ff..eddeb97040abd6676420dce5e9db9223a833db4e 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 $
  *
  *-------------------------------------------------------------------------
  */
@@ -124,6 +124,22 @@ PacketReceive(Port *port,	/* receive port */
 		return(STATUS_NOT_DONE);
 	    }
 	} 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).