Truncate incoming username and database name to NAMEDATALEN-1 characters
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 20 Feb 2001 01:34:40 +0000 (01:34 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
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 a973c49edde806ebd8f3d75c6d899a9dd3de3c4f..857d609057b02951267efd719201172c35afbc39 100644 (file)
@@ -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')