diff options
Diffstat (limited to 'src/backend/libpq/auth.c')
-rw-r--r-- | src/backend/libpq/auth.c | 105 |
1 files changed, 54 insertions, 51 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 58c60112e1c..b0891e4c5f2 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.23 1998/01/27 03:24:54 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.24 1998/01/29 03:23:05 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -390,9 +390,6 @@ void auth_failed(Port *port) */ void be_recvauth(Port *port) { - AuthRequest areq; - void (*auth_handler)(); - /* * Get the authentication method to use for this frontend/database * combination. @@ -400,70 +397,76 @@ void be_recvauth(Port *port) if (hba_getauthmethod(&port->raddr, port->database, port->auth_arg, &port->auth_method) != STATUS_OK) - { PacketSendError(&port->pktInfo, "Missing or mis-configured pg_hba.conf file"); - return; - } - /* Handle old style authentication. */ - - if (PG_PROTOCOL_MAJOR(port->proto) == 0) + else if (PG_PROTOCOL_MAJOR(port->proto) == 0) { + /* Handle old style authentication. */ + if (old_be_recvauth(port) != STATUS_OK) auth_failed(port); - - return; } - - /* Handle new style authentication. */ - - switch (port->auth_method) + else { - case uaReject: - auth_failed(port); - return; - - case uaKrb4: - areq = AUTH_REQ_KRB4; - auth_handler = handle_krb4_auth; - break; + AuthRequest areq; + void (*auth_handler)(); - case uaKrb5: - areq = AUTH_REQ_KRB5; - auth_handler = handle_krb5_auth; - break; + /* Keep the compiler quiet. */ - case uaTrust: areq = AUTH_REQ_OK; - auth_handler = handle_done_auth; - break; - case uaIdent: - if (authident(&port->raddr.in, &port->laddr.in, port->user, - port->auth_arg) != STATUS_OK) + /* Handle new style authentication. */ + + auth_handler = NULL; + + switch (port->auth_method) { - auth_failed(port); - return; - } + case uaReject: + break; + + case uaKrb4: + areq = AUTH_REQ_KRB4; + auth_handler = handle_krb4_auth; + break; - areq = AUTH_REQ_OK; - auth_handler = handle_done_auth; - break; + case uaKrb5: + areq = AUTH_REQ_KRB5; + auth_handler = handle_krb5_auth; + break; - case uaPassword: - areq = AUTH_REQ_PASSWORD; - auth_handler = handle_password_auth; - break; + case uaTrust: + areq = AUTH_REQ_OK; + auth_handler = handle_done_auth; + break; - case uaCrypt: - areq = AUTH_REQ_CRYPT; - auth_handler = handle_password_auth; - break; - } + case uaIdent: + if (authident(&port->raddr.in, &port->laddr.in, + port->user, port->auth_arg) == STATUS_OK) + { + areq = AUTH_REQ_OK; + auth_handler = handle_done_auth; + } + + break; - /* Tell the frontend what we want next. */ + case uaPassword: + areq = AUTH_REQ_PASSWORD; + auth_handler = handle_password_auth; + break; - sendAuthRequest(port, areq, auth_handler); + case uaCrypt: + areq = AUTH_REQ_CRYPT; + auth_handler = handle_password_auth; + break; + } + + /* Tell the frontend what we want next. */ + + if (auth_handler != NULL) + sendAuthRequest(port, areq, auth_handler); + else + auth_failed(port); + } } |