Re: BUG #18845: DEREF_OF_NULL.RET guc_malloc possibly returns NULL

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pm91.arapov@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2025-03-14T22:10:27Z
Lists: pgsql-bugs

Attachments

> On 14 Mar 2025, at 15:04, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> 
> Daniel Gustafsson <daniel@yesql.se> writes:
>> Why would we want FATAL here?  Wouldn't it be better to return false like how
>> other check_ functions already do?
> 
> Indeed.  Also, a quick survey shows a lot of inconsistency in
> guc_malloc callers --- some are lazy and just use ERROR rather
> than LOG-and-return.  That's probably all right for PGC_POSTMASTER
> variables (since there's no chance of continuing anyway) but
> perhaps it's worth improving elsewhere.

Turns out there was one more guc_malloc(LOG..  which didn't inspect the
returned allocation in check_synchronized_standby_slots.  On top of that there
were a few non PGC_POSTMASTER check functions that could return false and let
the GUC machinery handle it if we want to be consistent.

The fix for check_createrole_self_grant should go down to v16 and the fix for
check_synchronized_standby_slots down to 17, the other ones aren't bugs today
so that would be a changed behaviour in backbranches.

--
Daniel Gustafsson

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix guc_malloc calls for consistency and OOM checks