postgres.git / summary / log / commit / refs

commit    992cba94d38ef20765e4c54e4dff00ae8a58a6c5
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Sat Mar 20 16:38:22 2021 +0000
First released in: 10.17, 11.12, 12.7

    Fix memory leak when initializing DH parameters in backend
    
    When loading DH parameters used for the generation of ephemeral DH keys
    in the backend, the code has never bothered releasing the memory used
    for the DH information loaded from a file or from libpq's default.  This
    commit makes sure that the information is properly free()'d.
    
    Back-patch of e0e569e1d.  We originally thought the leak was minor and
    not worth back-patching, but Jelte Fennema pointed out that repeated
    SIGHUP's can result in very serious bloat of the postmaster, which is
    then multiplied by being duplicated into eadh forked child.
    
    Back-patch to v10; the code looked different before c0a15e07c,
    and didn't have a leak in the actually-live code paths.
    
    Michael Paquier
    
    Discussion: https://postgr.es/m/16160-18367e56e9a28264@postgresql.org


src/backend/libpq/be-secure-openssl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c index d8fdf0b2f0f..0374c49a47b 100644 --- a/src/backend/libpq/be-secure-openssl.c +++ b/src/backend/libpq/be-secure-openssl.c @@ -1029,8 +1029,11 @@ initialize_dh(SSL_CTX *context, bool isServerStart) (errcode(ERRCODE_CONFIG_FILE_ERROR), (errmsg("DH: could not set DH parameters: %s", SSLerrmessage(ERR_get_error()))))); + DH_free(dh); return false; } + + DH_free(dh); return true; } [parent: 4eca51d44641]