8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/libpq/auth.c,v 1.127 2005/07/25 04:52:31 tgl Exp $
11
+ * $PostgreSQL: pgsql/src/backend/libpq/auth.c,v 1.128 2005/10/08 19:32:57 tgl Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -119,6 +119,7 @@ static int
119
119
pg_krb5_init (void )
120
120
{
121
121
krb5_error_code retval ;
122
+ char * khostname ;
122
123
123
124
if (pg_krb5_initialised )
124
125
return STATUS_OK ;
@@ -145,25 +146,31 @@ pg_krb5_init(void)
145
146
return STATUS_ERROR ;
146
147
}
147
148
148
- if (pg_krb_server_hostname )
149
+ /*
150
+ * If no hostname was specified, pg_krb_server_hostname is already
151
+ * NULL. If it's set to blank, force it to NULL.
152
+ */
153
+ khostname = pg_krb_server_hostname ;
154
+ if (khostname && khostname [0 ] == '\0' )
155
+ khostname = NULL ;
156
+
157
+ retval = krb5_sname_to_principal (pg_krb5_context ,
158
+ khostname ,
159
+ pg_krb_srvnam ,
160
+ KRB5_NT_SRV_HST ,
161
+ & pg_krb5_server );
162
+ if (retval )
149
163
{
150
- retval = krb5_sname_to_principal (pg_krb5_context ,
151
- pg_krb_server_hostname , pg_krb_srvnam ,
152
- KRB5_NT_SRV_HST , & pg_krb5_server );
153
- if (retval )
154
- {
155
- ereport (LOG ,
156
- (errmsg ("Kerberos sname_to_principal(\"%s\") returned error %d" ,
157
- pg_krb_srvnam , retval )));
158
- com_err ("postgres" , retval ,
159
- "while getting server principal for service \"%s\"" ,
160
- pg_krb_srvnam );
161
- krb5_kt_close (pg_krb5_context , pg_krb5_keytab );
162
- krb5_free_context (pg_krb5_context );
163
- return STATUS_ERROR ;
164
- }
165
- } else
166
- pg_krb5_server = NULL ;
164
+ ereport (LOG ,
165
+ (errmsg ("Kerberos sname_to_principal(\"%s\") returned error %d" ,
166
+ pg_krb_srvnam , retval )));
167
+ com_err ("postgres" , retval ,
168
+ "while getting server principal for service \"%s\"" ,
169
+ pg_krb_srvnam );
170
+ krb5_kt_close (pg_krb5_context , pg_krb5_keytab );
171
+ krb5_free_context (pg_krb5_context );
172
+ return STATUS_ERROR ;
173
+ }
167
174
168
175
pg_krb5_initialised = 1 ;
169
176
return STATUS_OK ;
@@ -194,7 +201,7 @@ pg_krb5_recvauth(Port *port)
194
201
return ret ;
195
202
196
203
retval = krb5_recvauth (pg_krb5_context , & auth_context ,
197
- (krb5_pointer ) & port -> sock , "postgres" ,
204
+ (krb5_pointer ) & port -> sock , pg_krb_srvnam ,
198
205
pg_krb5_server , 0 , pg_krb5_keytab , & ticket );
199
206
if (retval )
200
207
{
0 commit comments