pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Peter Eisentraut <peter@eisentraut.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: More use of getpwuid_r() directly
Date: Mon, 02 Sep 2024 07:09:49 +0000
Message-ID: <E1sl1C9-000EDx-1x@gemulon.postgresql.org> (raw)

More use of getpwuid_r() directly

Remove src/port/user.c, call getpwuid_r() directly.  This reduces some
complexity and allows better control of the error behavior.  For
example, the old code would in some circumstances silently truncate
the result string, or produce error message strings that the caller
wouldn't use.

src/port/user.c used to be called src/port/thread.c and contained
various portability complications to support thread-safety.  These are
all obsolete, and all but the user-lookup functions have already been
removed.  This patch completes this by also removing the user-lookup
functions.

Also convert src/backend/libpq/auth.c to use getpwuid_r() for
thread-safety.

Originally, I tried to be overly correct by using
sysconf(_SC_GETPW_R_SIZE_MAX) to get the buffer size for getpwuid_r(),
but that doesn't work on FreeBSD.  All the OS where I could find the
source code internally use 1024 as the suggested buffer size, so I
just ended up hardcoding that.  The previous code used BUFSIZ, which
is an unrelated constant from stdio.h, so its use seemed
inappropriate.

Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>
Discussion: https://www.postgresql.org/message-id/flat/5f293da9-ceb4-4937-8e52-82c25db8e4d3%40eisentraut.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4d5111b3f1a151faf8129e38f8424898588e606d

Modified Files
--------------
src/backend/libpq/auth.c          | 21 +++++----
src/bin/psql/nls.mk               |  3 +-
src/include/port.h                |  6 ---
src/interfaces/libpq/fe-auth.c    | 23 +++++++---
src/interfaces/libpq/fe-connect.c | 23 ++++++++--
src/interfaces/libpq/nls.mk       |  3 +-
src/port/Makefile                 |  3 +-
src/port/meson.build              |  1 -
src/port/path.c                   | 23 ++++++++--
src/port/user.c                   | 89 ---------------------------------------
10 files changed, 72 insertions(+), 123 deletions(-)



Message-ID: <E1sl1C9-000EDx-1x@gemulon.postgresql.org>
Permalink:  ../E1sl1C9-000EDx-1x@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1sl1C9-000EDx-1x@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: peter@eisentraut.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: More use of getpwuid_r() directly
  In-Reply-To: <E1sl1C9-000EDx-1x@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox