aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Bossart <nathan@postgresql.org>2024-12-12 15:52:04 -0600
committerNathan Bossart <nathan@postgresql.org>2024-12-12 15:52:04 -0600
commitd09fbf645ecea4f36309dc34731e6fd66a342131 (patch)
tree441b2d70053746bcfa428af3202c8193c497d874
parent8afff7d6db25ab52f155d8a220f692d7d6d84152 (diff)
downloadpostgresql-d09fbf645ecea4f36309dc34731e6fd66a342131.tar.gz
postgresql-d09fbf645ecea4f36309dc34731e6fd66a342131.zip
Revert "Don't truncate database and user names in startup packets."
This reverts commit 562bee0fc13dc95710b8db6a48edad2f3d052f2e. We received a report from the field about this change in behavior, so it seems best to revert this commit and to add proper multibyte-aware truncation as a follow-up exercise. Fixes bug #18711. Reported-by: Adam Rauch Reviewed-by: Tom Lane, Bertrand Drouvot, Bruce Momjian, Thomas Munro Discussion: https://postgr.es/m/18711-7503ee3e449d2c47%40postgresql.org Backpatch-through: 17
-rw-r--r--src/backend/tcop/backend_startup.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/backend/tcop/backend_startup.c b/src/backend/tcop/backend_startup.c
index cfa27551964..ce1275bccfe 100644
--- a/src/backend/tcop/backend_startup.c
+++ b/src/backend/tcop/backend_startup.c
@@ -805,6 +805,15 @@ ProcessStartupPacket(Port *port, bool ssl_done, bool gss_done)
if (port->database_name == NULL || port->database_name[0] == '\0')
port->database_name = pstrdup(port->user_name);
+ /*
+ * Truncate given database and user names to length of a Postgres name.
+ * This avoids lookup failures when overlength names are given.
+ */
+ if (strlen(port->database_name) >= NAMEDATALEN)
+ port->database_name[NAMEDATALEN - 1] = '\0';
+ if (strlen(port->user_name) >= NAMEDATALEN)
+ port->user_name[NAMEDATALEN - 1] = '\0';
+
if (am_walsender)
MyBackendType = B_WAL_SENDER;
else