> On Oct 9, 2025, at 22:58, Nathan Bossart <[email protected]> wrote: > > On Thu, Oct 09, 2025 at 08:08:05AM -0400, Andres Freund wrote: >> And I think it is right. XLOG_DBASE_CREATE_FILE_COPY is careful to >> pfree(parent_path), but XLOG_DBASE_CREATE_WAL_LOG isn't. > > It looks like this was introduced by commit 9e4f914, which was > back-patched, but the code path in question first appears in v15. So, > presumably something like the following needs to be back-patched that far. > I can take care of it unless someone else wants it. > > diff --git a/src/backend/commands/dbcommands.c > b/src/backend/commands/dbcommands.c > index 2793fd83771..4d65e8c46c2 100644 > --- a/src/backend/commands/dbcommands.c > +++ b/src/backend/commands/dbcommands.c > @@ -3375,6 +3375,7 @@ dbase_redo(XLogReaderState *record) > parent_path = pstrdup(dbpath); > get_parent_directory(parent_path); > recovery_create_dbdir(parent_path, true); > + pfree(parent_path); > > /* Create the database directory with the version file. */ > CreateDirAndVersionFile(dbpath, xlrec->db_id, xlrec->tablespace_id, >
pstrdup() allocates memory from current context for dest string, so the memory it returns should be free-ed. LGTM. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
