Truncate incoming username and database name to NAMEDATALEN-1 characters
authorTom Lane <[email protected]>
Tue, 20 Feb 2001 01:34:40 +0000 (01:34 +0000)
committerTom Lane <[email protected]>
Tue, 20 Feb 2001 01:34:40 +0000 (01:34 +0000)
so that we don't reject overlength names unnecessarily.

src/backend/postmaster/postmaster.c

index 844b4c164d9c6547b3a62ddc202eed5be91dd6ab..e807d3d0696e0bb4f6e0b50028fa185d1fdc3240 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.207 2001/02/11 23:12:28 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.208 2001/02/20 01:34:40 tgl Exp $
  *
  * NOTES
  *
@@ -1123,6 +1123,14 @@ readStartupPacket(void *arg, PacketLen len, void *pkt)
    if (port->database[0] == '\0')
        StrNCpy(port->database, si->user, sizeof(port->database));
 
+   /* Truncate given database and user names to length of a Postgres name. */
+   /* This avoids lookup failures when overlength names are given. */
+
+   if ((int) sizeof(port->database) >= NAMEDATALEN)
+       port->database[NAMEDATALEN-1] = '\0';
+   if ((int) sizeof(port->user) >= NAMEDATALEN)
+       port->user[NAMEDATALEN-1] = '\0';
+
    /* Check a user name was given. */
 
    if (port->user[0] == '\0')