OSDN Git Service

I've been having also sorts of fun trying to get kerberos 4
authorBruce Momjian <bruce@momjian.us>
Sun, 14 Mar 1999 16:06:43 +0000 (16:06 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 14 Mar 1999 16:06:43 +0000 (16:06 +0000)
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

src/backend/libpq/auth.c
src/interfaces/libpq/fe-auth.c

index 6adf2ee..7ef784e 100644 (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;
index 46d2290..99f273d 100644 (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] = "";