Re: BUG #18711: Attempting a connection with a database name longer than 63 characters now fails
Nathan Bossart <nathandbossart@gmail.com>
From: Nathan Bossart <nathandbossart@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>, Bruce Momjian <bruce@momjian.us>, adam@labkey.com, pgsql-bugs@lists.postgresql.org
Date: 2024-11-27T19:34:22Z
Lists: pgsql-bugs
Attachments
- save_untruncated_names.patch (text/plain) patch
On Wed, Nov 27, 2024 at 01:17:18PM -0500, Tom Lane wrote: > I have an idea that might salvage something from what we've just > been doing. The biggest single problem with the old behavior, > AIUI, was the possibility of sending back encoding-corrupt names > in connection failure reports. How about something like: > > * Don't truncate the names on sight (so we keep 562bee0fc1). > > * Truncate the names at NAMEDATALEN-1 just before catalog lookup > (this restores the old lookup behavior, solving the current report). > > * In lookup-failure messages, be sure to report the un-truncated > name (avoiding the bad-encoding problem). > > * Copy the correctly-truncated names from the catalog to any > persistent storage such as MyProcPort, so that those are used > for all post-connection purposes. One possible issue with truncating the names after-the-fact is that hooks like ClientAuthentication_hook will have already been called with the untruncated names. If it's just the connection failure reports we are worried about, then maybe we should save the "raw" names to MyProcPort before truncating and be sure to use those in the log messages. I attached a rough sketch of what I'm imagining. If we aren't thrilled about adding new fields to "struct Port" in a minor release, we could just do a straight revert on the back-branches and add that part to v18. -- nathan
Commits
-
Revert "Don't truncate database and user names in startup packets."
- d09fbf645ece 17.3 landed
- a0ff56e2d3ff 18.0 landed
-
Don't truncate database and user names in startup packets.
- 562bee0fc13d 17.0 cited
-
Truncate incoming username and database name to NAMEDATALEN-1 characters
- d18c1d1f5102 7.1.1 cited