diff options
Diffstat (limited to 'src/backend/libpq/auth.c')
-rw-r--r-- | src/backend/libpq/auth.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 88523099a5..b6814615fb 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -43,6 +43,7 @@ static int recv_and_check_password_packet(Port *port); char *pg_krb_server_keyfile; char *pg_krb_srvnam; bool pg_krb_caseins_users; +char *pg_krb_server_hostname = NULL; #ifdef USE_PAM #ifdef HAVE_PAM_PAM_APPL_H @@ -221,20 +222,25 @@ pg_krb5_init(void) return STATUS_ERROR; } - retval = krb5_sname_to_principal(pg_krb5_context, NULL, pg_krb_srvnam, - KRB5_NT_SRV_HST, &pg_krb5_server); - if (retval) + if (pg_krb_server_hostname) { - ereport(LOG, - (errmsg("Kerberos sname_to_principal(\"%s\") returned error %d", - pg_krb_srvnam, retval))); - com_err("postgres", retval, - "while getting server principal for service \"%s\"", - pg_krb_srvnam); - krb5_kt_close(pg_krb5_context, pg_krb5_keytab); - krb5_free_context(pg_krb5_context); - return STATUS_ERROR; - } + retval = krb5_sname_to_principal(pg_krb5_context, + pg_krb_server_hostname, pg_krb_srvnam, + KRB5_NT_SRV_HST, &pg_krb5_server); + if (retval) + { + ereport(LOG, + (errmsg("Kerberos sname_to_principal(\"%s\") returned error %d", + pg_krb_srvnam, retval))); + com_err("postgres", retval, + "while getting server principal for service \"%s\"", + pg_krb_srvnam); + krb5_kt_close(pg_krb5_context, pg_krb5_keytab); + krb5_free_context(pg_krb5_context); + return STATUS_ERROR; + } + } else + pg_krb5_server = NULL; pg_krb5_initialised = 1; return STATUS_OK; |