1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-19 23:22:23 +03:00

Minor cleanup of backend SCRAM code.

Free each SASL message after sending it. It's not a lot of wasted memory,
and it's short-lived, but the authentication code in general tries to
pfree() stuff, so let's follow the example.

Adding the pfree() revealed a little bug in build_server_first_message().
It attempts to keeps a copy of the sent message, but it was missing a
pstrdup(), so the pointer started to dangle, after adding the pfree()
into CheckSCRAMAuth().

Reword comments and debug messages slightly, while we're at it.

Reviewed by Michael Paquier.

Discussion: https://www.postgresql.org/message-id/6490b975-5ee1-6280-ac1d-af975b19fb9a@iki.fi
This commit is contained in:
Heikki Linnakangas
2017-04-13 17:44:15 +03:00
parent 3d5facfd9a
commit 00707fa582
2 changed files with 12 additions and 10 deletions

View File

@@ -161,10 +161,10 @@ static char *scram_MockSalt(const char *username);
* needs to be called before doing any exchange. It will be filled later
* after the beginning of the exchange with verifier data.
*
* 'username' is the provided by the client. 'shadow_pass' is the role's
* password verifier, from pg_authid.rolpassword. If 'shadow_pass' is NULL, we
* still perform an authentication exchange, but it will fail, as if an
* incorrect password was given.
* 'username' is the username provided by the client in the startup message.
* 'shadow_pass' is the role's password verifier, from pg_authid.rolpassword.
* If 'shadow_pass' is NULL, we still perform an authentication exchange, but
* it will fail, as if an incorrect password was given.
*/
void *
pg_be_scram_init(const char *username, const char *shadow_pass)
@@ -984,7 +984,7 @@ build_server_first_message(scram_state *state)
state->client_nonce, state->server_nonce,
state->salt, state->iterations);
return state->server_first_message;
return pstrdup(state->server_first_message);
}