Postmaster crashes on SIGHUP when oauth_validator_libraries holds only whitespace

From: Grigorev Jurij <ju(dot)grigorev(at)ftdata(dot)ru>
To: "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Cc: "jacob(dot)champion(at)enterprisedb(dot)com" <jacob(dot)champion(at)enterprisedb(dot)com>, "daniel(at)yesql(dot)se" <daniel(at)yesql(dot)se>
Subject: Postmaster crashes on SIGHUP when oauth_validator_libraries holds only whitespace
Date: 2026-09-14 11:22:42
Message-ID: 04fa84f6ebbe400f940e179ebe1070e9@localhost.localdomain
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,

I ran into a postmaster crash while investigating a static analyzer
report against 18.6. I reproduced it on master (92aaf50e230,
--enable-cassert, Debian 13/aarch64).

To reproduce, set the following in postgresql.conf:

oauth_validator_libraries = ' '

and add an OAuth line without validator= to pg_hba.conf:

host all all 127.0.0.1/32 oauth issuer="https://example.com" scope="openid"

On reload the server log ends here:

LOG: received SIGHUP, reloading configuration files
LOG: parameter "oauth_validator_libraries" changed to " "

gdb then reports SIGSEGV in check_oauth_validator(), via load_hba().
The running instance goes down with every session on it. The same
configuration also prevents startup. pg_hba_file_rules() parses the
file from a regular backend, so the same NULL dereference there kills
the backend and the postmaster restarts the cluster.

check_oauth_validator() treats an unset list as an error by looking at
the raw GUC string, but SplitDirectoriesString() accepts a string of
spaces and returns NIL. The subsequent elemlist->length dereferences
that. This is a misconfiguration rather than a security issue -- the
GUC has PGC_SIGHUP context and is marked GUC_SUPERUSER_ONLY.

I've attached a patch against master that checks the parsed list
instead. It also adds a TAP test for reload. The patched master built
without warnings, and "make check" in src/test/modules/oauth_validator
passed with PG_TEST_EXTRA=oauth.

This appears to affect v18 onward, where OAuth support was added, so it
may need back-patching. The v18 error message has different wording
and would need a small adjustment.

Could someone take a look at the attached patch and let me know
if this is the right fix?

Thanks,
Yuriy

Attachment Content-Type Size
v1-0001-Fix-postmaster-crash-on-whitespace-only-oauth_valida.patch application/octet-stream 4.1 KB

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Daniel Gustafsson 2026-09-14 11:28:11 Re: Postmaster crashes on SIGHUP when oauth_validator_libraries holds only whitespace
Previous Message Ayush Tiwari 2026-09-14 09:34:57 Re: BUG #19684: Assertion in tuplesort_begin_heap() falsified by parallel plan with sort