I've been having also sorts of fun trying to get kerberos 4

authentifica
tion
working with postgresql-6.4.2 and  KTH-KRB Ebones
(http://www.pdc.kth.se/kth-kr
b) on a dec alpha running DU 4.0D using the native compiler. The
following
patch does the trick.

The rationale behind this is as follows. The KTH-KRB code header files
defines
lots of lengths like INST_SZ,REALM_SZ and KRB_SENDAUTH_VLEN. It also has
a
habit of doing things like

        chararray[LENGTH] = '\0'

to ensure null terminated strings. In my instance this just happens to
blat
the kerberos principal instance string leading to error like

        pg_krb4_recvauth: kerberos error: Can't decode authenticator
(krb_rd_req
)

The application code that comes with KTH-KRB uses "KRB_SENDAUTH_VLEN +
1" and
sometimes uses "INST_SZ + 1" so it seems safest to put that 1 char
buffer in
the appropriate place.


Rodney McDuff
This commit is contained in:
Bruce Momjian 1999-03-14 16:06:43 +00:00
parent aba8c12f67
commit 9cab13c42e
2 changed files with 6 additions and 6 deletions

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.33 1999/02/13 23:15:38 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.34 1999/03/14 16:06:42 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -77,8 +77,8 @@ pg_krb4_recvauth(Port *port)
{
long krbopts = 0; /* one-way authentication */
KTEXT_ST clttkt;
char instance[INST_SZ],
version[KRB_SENDAUTH_VLEN];
char instance[INST_SZ+1],
version[KRB_SENDAUTH_VLEN+1];
AUTH_DAT auth_data;
Key_schedule key_sched;
int status;

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.26 1999/02/13 23:22:39 momjian Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.27 1999/03/14 16:06:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -144,8 +144,8 @@ pg_krb4_init()
static char *
pg_krb4_authname(char *PQerrormsg)
{
char instance[INST_SZ];
char realm[REALM_SZ];
char instance[INST_SZ+1];
char realm[REALM_SZ+1];
int status;
static char name[SNAME_SZ + 1] = "";