postgres.git / summary / log / commit / refs

commit    d46ad72f464beafa6d92d60d214412374559e280
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Thu Nov 24 01:27:38 2022 +0000
First released in: 16.0

    Create memory context for tokenization after opening top-level file in hba.c
    
    The memory context was created before attempting to open the first HBA
    or ident file, which would cause it to leak.  This had no consequences
    for the system views for HBA and ident files, but this would cause
    memory leaks in the postmaster on reload if the initial HBA and/or ident
    files are missing, which is a valid behavior while the backend is
    running.
    
    Oversight in efc9816.
    
    Author: Ted Yu
    Discussion: https://postgr.es/m/CALte62xH6ivgiKKzPRJgfekPZC6FKLB3xbnf3=tZmc_gKj78dw@mail.gmail.com


src/backend/libpq/hba.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index d6254d820fb..1bd151c9416 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -601,22 +601,6 @@ open_auth_file(const char *filename, int elevel, int depth, return NULL; } - /* - * When opening the top-level file, create the memory context used for the - * tokenization. This will be closed with this file when coming back to - * this level of cleanup. - */ - if (depth == 0) - { - /* - * A context may be present, but assume that it has been eliminated - * already. - */ - tokenize_context = AllocSetContextCreate(CurrentMemoryContext, - "tokenize_context", - ALLOCSET_START_SMALL_SIZES); - } - file = AllocateFile(filename, "r"); if (file == NULL) { @@ -634,6 +618,22 @@ open_auth_file(const char *filename, int elevel, int depth, return NULL; } + /* + * When opening the top-level file, create the memory context used for the + * tokenization. This will be closed with this file when coming back to + * this level of cleanup. + */ + if (depth == 0) + { + /* + * A context may be present, but assume that it has been eliminated + * already. + */ + tokenize_context = AllocSetContextCreate(CurrentMemoryContext, + "tokenize_context", + ALLOCSET_START_SMALL_SIZES); + } + return file; } [parent: d5566fbfeb6a]