pgsql: In username-map substitution, cope with more than one \1.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: In username-map substitution, cope with more than one \1.
Date: 2025-07-13 17:52:41
Message-ID: E1ub0sT-00685V-0T@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

In username-map substitution, cope with more than one \1.

If the system-name field of a pg_ident.conf line is a regex
containing capturing parentheses, you can write \1 in the
user-name field to represent the captured part of the system
name. But what happens if you write \1 more than once?
The only reasonable expectation IMO is that each \1 gets
replaced, but presently our code replaces only the first.
Fix that.

Also, improve the tests for this feature to exercise cases
where a non-empty string needs to be substituted for \1.
The previous testing didn't inspire much faith that it
was verifying correct operation of the substitution code.

Given the lack of field complaints about this, I don't
feel a need to back-patch.

Reported-by: David G. Johnston <david(dot)g(dot)johnston(at)gmail(dot)com>
Author: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Discussion: https://postgr.es/m/CAKFQuwZu6kZ8ZPvJ3pWXig+6UX4nTVK-hdL_ZS3fSdps=RJQQQ@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3c4e26a62c31ebe296e3aedb13ac51a7a35103bd

Modified Files
--------------
src/backend/libpq/hba.c | 38 ++++++++++++++++++++++++++---------
src/test/authentication/t/003_peer.pl | 18 +++++++++++------
2 files changed, 40 insertions(+), 16 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2025-07-14 00:09:27 pgsql: psql: Add variable SERVICEFILE
Previous Message Michael Paquier 2025-07-13 07:53:34 pgsql: libpq: Add "servicefile" connection option