postgres.git / summary / log / commit / refs

commit    ab27df2490e3a5dfb8ecb3de66818d16645ef3dd
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Tue Jan 11 17:03:06 2022 +0000

    Clean up error message reported after \password encryption failure.
    
    Experimenting with FIPS mode enabled, I saw
    
    regression=# \password joe
    Enter new password for user "joe":
    Enter it again:
    could not encrypt password: disabled for FIPS
    out of memory
    
    because PQencryptPasswordConn was still of the opinion that "out of
    memory" is always appropriate to print.
    
    Minor oversight in b69aba745.  Like that one, back-patch to v14.


src/interfaces/libpq/fe-auth.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c index 24927fd040f..5d0aaa8536b 100644 --- a/src/interfaces/libpq/fe-auth.c +++ b/src/interfaces/libpq/fe-auth.c @@ -1265,6 +1265,10 @@ PQencryptPasswordConn(PGconn *conn, const char *passwd, const char *user, if (strcmp(algorithm, "scram-sha-256") == 0) { crypt_pwd = pg_fe_scram_build_secret(passwd); + /* We assume the only possible failure is OOM */ + if (!crypt_pwd) + appendPQExpBufferStr(&conn->errorMessage, + libpq_gettext("out of memory\n")); } else if (strcmp(algorithm, "md5") == 0) { @@ -1282,6 +1286,9 @@ PQencryptPasswordConn(PGconn *conn, const char *passwd, const char *user, crypt_pwd = NULL; } } + else + appendPQExpBufferStr(&conn->errorMessage, + libpq_gettext("out of memory\n")); } else { @@ -1291,9 +1298,5 @@ PQencryptPasswordConn(PGconn *conn, const char *passwd, const char *user, return NULL; } - if (!crypt_pwd) - appendPQExpBufferStr(&conn->errorMessage, - libpq_gettext("out of memory\n")); - return crypt_pwd; } [parent: 3a0cced86d3b]