[24144] in Source-Commits

home help back first fref pref prev next nref lref last post

/svn/athena r23746 - in trunk/third/moira/debian: . patches

daemon@ATHENA.MIT.EDU (Evan Broder)
Wed Apr 15 15:39:21 2009

Date: Wed, 15 Apr 2009 15:39:08 -0400
From: Evan Broder <broder@MIT.EDU>
Message-Id: <200904151939.n3FJd8Ep031887@drugstore.mit.edu>
To: source-commits@mit.edu
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: broder
Date: 2009-04-15 15:39:08 -0400 (Wed, 15 Apr 2009)
New Revision: 23746

Added:
   trunk/third/moira/debian/patches/build-without-krb4
   trunk/third/moira/debian/patches/series
Modified:
   trunk/third/moira/debian/changelog
   trunk/third/moira/debian/rules
Log:
Add a patch to debathena-moira to allow it to be built without krb4
(for Debian Squeeze)


Modified: trunk/third/moira/debian/changelog
===================================================================
--- trunk/third/moira/debian/changelog	2009-04-14 05:45:23 UTC (rev 23745)
+++ trunk/third/moira/debian/changelog	2009-04-15 19:39:08 UTC (rev 23746)
@@ -2,7 +2,7 @@
 
   * New CVS snapshot (Trac: #195)
   * Drop patches that have been incorporated upstream.
-  * Update to build without krb4 on systems that no longer have it.
+  * Add patch to allow building on systems without krb4. (Trac: #198)
 
  -- Evan Broder <broder@mit.edu>  Sun, 12 Apr 2009 14:03:22 -0400
 

Added: trunk/third/moira/debian/patches/build-without-krb4
===================================================================
--- trunk/third/moira/debian/patches/build-without-krb4	2009-04-14 05:45:23 UTC (rev 23745)
+++ trunk/third/moira/debian/patches/build-without-krb4	2009-04-15 19:39:08 UTC (rev 23746)
@@ -0,0 +1,760 @@
+Index: debathena-moira-4.0.0+cvs20090409/configure.in
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/configure.in	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/configure.in	2009-04-14 18:14:08.000000000 -0400
+@@ -109,30 +109,34 @@
+ AC_SUBST(COM_ERR_SUBDIR)
+ AC_SUBST(COMPILE_ET)
+ 
++AC_CHECK_LIB(k5crypto, main, crypto="k5crypto",
++             [AC_CHECK_LIB(crypto, main, crypto="crypto")])
++
+ # Kerberos (Kerberos 4 required, Kerberos 5 optional for reg_svr)
+ AC_MSG_CHECKING(for Kerberos 4)
+ AC_ARG_WITH(krb4,
+     [  --with-krb4=PREFIX      Specify location of krb4],
+     [krb4="$withval"], [krb4=no])
+ AC_MSG_RESULT($krb4)
+-if test "$krb4" != yes; then
+-    MR_INCLUDE($krb4/include)
+-    if test -d "$krb4/include/kerberosIV"; then
+-	MR_INCLUDE($krb4/include/kerberosIV)
++if test "$krb4" != no; then
++    if test "$krb4" != yes; then
++	MR_INCLUDE($krb4/include)
++	if test -d "$krb4/include/kerberosIV"; then
++	    MR_INCLUDE($krb4/include/kerberosIV)
++	fi
++	MR_LIBS($krb4/lib)
++    elif test -d /usr/include/kerberosIV; then
++	MR_INCLUDE(/usr/include/kerberosIV)
+     fi
+-    MR_LIBS($krb4/lib)
+-elif test -d /usr/include/kerberosIV; then
+-    MR_INCLUDE(/usr/include/kerberosIV)
++    MR_DEFINE(HAVE_KRB4)
++    AC_CHECK_LIB(krb4, krb_rd_req,
++		 [KRB4_LIBS="-lkrb4 -ldes425 -lkrb5 -l${crypto} -lresolv"],
++		 [AC_CHECK_LIB(krb, krb_rd_req,
++			       [KRB4_LIBS="-lkrb -ldes"],
++			       [AC_MSG_ERROR(Kerberos 4 libraries not found)],
++			       $LIBPATH -ldes)],
++		 $LIBPATH -ldes425 -lkrb5 -l${crypto} -lcom_err -lresolv)
+ fi
+-AC_CHECK_LIB(k5crypto, main, crypto="k5crypto",
+-             [AC_CHECK_LIB(crypto, main, crypto="crypto")])
+-AC_CHECK_LIB(krb4, krb_rd_req,
+-	     [KRB4_LIBS="-lkrb4 -ldes425 -lkrb5 -l${crypto} -lresolv"],
+-	     [AC_CHECK_LIB(krb, krb_rd_req,
+-			   [KRB4_LIBS="-lkrb -ldes"],
+-			   [AC_MSG_ERROR(Kerberos 4 libraries not found)],
+-			   $LIBPATH -ldes)],
+-	     $LIBPATH -ldes425 -lkrb5 -l${crypto} -lcom_err -lresolv)
+ 
+ AC_MSG_CHECKING(for Kerberos 5)
+ AC_ARG_WITH(krb5,
+Index: debathena-moira-4.0.0+cvs20090409/lib/mr_et.et
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/lib/mr_et.et	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/lib/mr_et.et	2009-04-14 18:04:03.000000000 -0400
+@@ -237,4 +237,7 @@
+ ec	MR_BAD_MAIL_STRING,
+ 	"Address refers to nonexistent domain or MIT internal mail server"
+ 
++ec	MR_NO_KRB4,
++	"Unable to complete operation using Kerberos v4"
++
+ 	end
+Index: debathena-moira-4.0.0+cvs20090409/update/auth_002.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/update/auth_002.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/update/auth_002.c	2009-04-14 18:04:03.000000000 -0400
+@@ -15,14 +15,18 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
++#ifdef HAVE_KRB4
+ #include <krb.h>
++#endif
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/update/auth_002.c,v 1.9 1998-10-21 19:27:29 danw Exp $");
+ 
+ static char service[] = "rcmd";
+ static char master[] = "sms";
+ static char qmark[] = "???";
++#ifdef HAVE_KRB4
+ extern des_cblock session;
++#endif
+ 
+ /*
+  * authentication request auth_002:
+@@ -39,6 +43,7 @@
+ 
+ void auth_002(int conn, char *str)
+ {
++#ifdef HAVE_KRB4
+   char aname[ANAME_SZ], ainst[INST_SZ], arealm[REALM_SZ];
+   AUTH_DAT ad;
+   char *p, *first, *data;
+@@ -126,4 +131,7 @@
+   com_err(whoami, code, "auth for %s.%s@%s failed",
+ 	  ad.pname, ad.pinst, ad.prealm);
+   send_int(conn, code);
++#else
++  return MR_NO_KRB4;
++#endif
+ }
+Index: debathena-moira-4.0.0+cvs20090409/update/client.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/update/client.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/update/client.c	2009-04-14 18:04:03.000000000 -0400
+@@ -17,13 +17,17 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
++#ifdef HAVE_KRB4
+ #include <des.h>
+ #include <krb.h>
++#endif
+ #include <krb5.h>
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/update/client.c,v 1.27 2006-08-22 17:36:26 zacheiss Exp $");
+ 
++#ifdef HAVE_KRB4
+ extern des_cblock session;
++#endif
+ extern char *whoami;
+ extern krb5_context context;
+ 
+@@ -71,6 +75,7 @@
+ 
+ int mr_send_auth(int conn, char *host_name)
+ {
++#ifdef HAVE_KRB4
+   KTEXT_ST ticket_st;
+   int code, auth_version = 2;
+   long response;
+@@ -129,6 +134,9 @@
+     }
+ 
+   return MR_SUCCESS;
++#else
++  return MR_NO_KRB4;
++#endif
+ }
+ 
+ int mr_execute(int conn, char *path)
+Index: debathena-moira-4.0.0+cvs20090409/update/ticket.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/update/ticket.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/update/ticket.c	2009-04-14 18:04:03.000000000 -0400
+@@ -13,19 +13,27 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
++#ifdef HAVE_KRB4
+ #include <krb.h>
++#else
++#define KTEXT void*
++#endif
+ #include <krb5.h>
+ #include <update.h>
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/update/ticket.c,v 1.23 2007-07-25 15:39:01 zacheiss Exp $");
+ 
++#ifdef HAVE_KRB4
+ static char realm[REALM_SZ];
+ static char master[INST_SZ] = "sms";
+ static char service[ANAME_SZ] = "rcmd";
+ des_cblock session;
++#endif
+ krb5_context context = NULL;
+ 
++#ifdef HAVE_KRB4
+ static int get_mr_tgt(void);
++#endif
+ 
+ int get_mr_krb5_update_ticket(char *host, krb5_data auth)
+ {
+@@ -58,6 +66,7 @@
+ 
+ int get_mr_update_ticket(char *host, KTEXT ticket)
+ {
++#ifdef HAVE_KRB4
+   int code, pass;
+   char phost[BUFSIZ];
+   CREDENTIALS cr;
+@@ -93,8 +102,12 @@
+       memcpy(session, cr.session, sizeof(session));
+     }
+   return code;
++#else
++  return MR_NO_KRB4;
++#endif
+ }
+ 
++#ifdef HAVE_KRB4
+ static int get_mr_tgt(void)
+ {
+   int code;
+@@ -109,3 +122,4 @@
+   else
+     return code + ERROR_TABLE_BASE_krb;
+ }
++#endif
+Index: debathena-moira-4.0.0+cvs20090409/include/update.h
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/include/update.h	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/include/update.h	2009-04-14 18:04:03.000000000 -0400
+@@ -15,7 +15,4 @@
+ int mr_execute(int conn, char *path);
+ void mr_send_quit(int conn);
+ 
+-#include <krb.h>
+-int get_mr_update_ticket(char *host, KTEXT ticket);
+-
+ extern char *whoami;
+Index: debathena-moira-4.0.0+cvs20090409/clients/lib/utils.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/clients/lib/utils.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/clients/lib/utils.c	2009-04-14 18:04:03.000000000 -0400
+@@ -12,7 +12,6 @@
+ #include <mrclient.h>
+ 
+ #include <com_err.h>
+-#include <krb.h>
+ #include <krb5.h>
+ 
+ #include <sys/types.h>
+Index: debathena-moira-4.0.0+cvs20090409/clients/lib/member.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/clients/lib/member.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/clients/lib/member.c	2009-04-14 18:04:03.000000000 -0400
+@@ -17,12 +17,10 @@
+ #include <string.h>
+ #include <ctype.h>
+ 
+-#include <krb.h>
++#include <krb5.h>
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/clients/lib/member.c,v 1.5 2002-09-25 20:44:54 zacheiss Exp $");
+ 
+-static char default_realm[REALM_SZ];
+-
+ int mrcl_validate_string_member(char *str)
+ {
+   char *p, *lname, *ret;
+@@ -69,6 +67,9 @@
+ int mrcl_validate_kerberos_member(char *str, char **ret)
+ {
+   char *p;
++  int code = 0;
++  krb5_context context = NULL;
++  char *default_realm = NULL;
+ 
+   mrcl_clear_message();
+ 
+@@ -97,14 +98,27 @@
+ 	  return MRCL_SUCCESS;
+ 	}
+ 
+-      if (!*default_realm)
+-	krb_get_lrealm(default_realm, 1);
++      code = krb5_init_context(&context);
++      if (!code)
++        goto out;
++
++      code = krb5_get_default_realm(context, &default_realm);
++      if (!code)
++        goto out;
+ 
+       *ret = malloc(strlen(str) + strlen(default_realm) + 2);
+       sprintf(*ret, "%s@%s", str, default_realm);
+ 
+       mrcl_set_message("Warning: default realm \"%s\" added to principal "
+ 		       "\"%s\"", default_realm, str);
++
++    out:
++      if (default_realm)
++        free(default_realm);
++      if (context)
++        krb5_free_context(context);
++      if (!code)
++        return code;
+       return MRCL_SUCCESS;
+     }
+ 
+Index: debathena-moira-4.0.0+cvs20090409/lib/mr_auth.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/lib/mr_auth.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/lib/mr_auth.c	2009-04-14 18:04:03.000000000 -0400
+@@ -15,7 +15,9 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
++#ifdef HAVE_KRB4
+ #include <krb.h>
++#endif
+ #include <krb5.h>
+ 
+ krb5_context context = NULL;
+@@ -29,6 +31,7 @@
+ 
+ int mr_auth(char *prog)
+ {
++#ifdef HAVE_KRB4
+   int status;
+   mr_params params, reply;
+   char *args[2];
+@@ -70,6 +73,9 @@
+   mr_destroy_reply(reply);
+ 
+   return status;
++#else
++  return MR_NO_KRB4;
++#endif
+ }
+ 
+ int mr_proxy(char *principal, char *orig_authtype)
+Index: debathena-moira-4.0.0+cvs20090409/clients/moira/namespace.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/clients/moira/namespace.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/clients/moira/namespace.c	2009-04-14 18:04:03.000000000 -0400
+@@ -23,8 +23,6 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-#include <krb.h>
+-
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/clients/moira/namespace.c,v 1.16 2006-08-23 19:02:27 zacheiss Exp $");
+ 
+ static void ErrorExit(char *buf, int status);
+@@ -176,7 +174,6 @@
+   int status;
+   Menu *menu;
+   char *motd, **arg;
+-  char pname[ANAME_SZ];
+   struct sigaction act;
+ 
+   if (!(program_name = strrchr(argv[0], '/')))
+Index: debathena-moira-4.0.0+cvs20090409/update/get_file.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/update/get_file.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/update/get_file.c	2009-04-14 18:04:03.000000000 -0400
+@@ -17,7 +17,9 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
++#ifdef HAVE_KRB4
+ #include <des.h>
++#endif
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/update/get_file.c,v 1.20 2007-07-11 16:06:31 zacheiss Exp $");
+ 
+@@ -25,9 +27,11 @@
+ #define MIN(a, b)    (((a) < (b)) ? (a) : (b))
+ #endif /* MIN */
+ 
++#ifdef HAVE_KRB4
+ static des_key_schedule sched;
+ static des_cblock ivec;
+ extern des_cblock session;
++#endif
+ 
+ static int get_block(int conn, int fd, int max_size, int encrypt);
+ 
+@@ -123,8 +127,15 @@
+ 
+   if (encrypt)
+     {
++#ifdef HAVE_KRB4
+       des_key_sched(session, sched);
+       memcpy(ivec, session, sizeof(ivec));
++#else
++      /* The session key only gets stored if auth happens in krb4 to
++         begin with. If you don't have krb4, you can't possibly be
++         coming up with a valid session key. */
++      return MR_NO_KRB4;
++#endif
+     }
+ 
+   n_written = 0;
+@@ -173,6 +184,7 @@
+ 
+   if (encrypt)
+     {
++#ifdef HAVE_KRB4
+       char *unenc = malloc(len);
+ 
+       if (!unenc)
+@@ -186,6 +198,7 @@
+ 	ivec[i] = data[len - 8 + i] ^ unenc[len - 8 + i];
+       free(data);
+       data = unenc;
++#endif
+     }
+ 
+   n_read = MIN(len, max_size);
+Index: debathena-moira-4.0.0+cvs20090409/update/send_file.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/update/send_file.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/update/send_file.c	2009-04-14 18:04:03.000000000 -0400
+@@ -17,12 +17,16 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
++#ifdef HAVE_KRB4
+ #include <des.h>
++#endif
+ #include <update.h>
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/update/send_file.c,v 1.16 2001-09-04 19:46:21 zacheiss Exp $");
+ 
++#ifdef HAVE_KRB4
+ extern des_cblock session;
++#endif
+ 
+ /*
+  * syntax:
+@@ -47,8 +51,10 @@
+   char data[UPDATE_BUFSIZ], enc[UPDATE_BUFSIZ];
+   long response;
+   struct stat statb;
++#ifdef HAVE_KRB4
+   des_key_schedule sched;
+   des_cblock ivec;
++#endif
+ 
+   /* send file over */
+   fd = open(pathname, O_RDONLY, 0);
+@@ -105,8 +111,15 @@
+ 
+   if (encrypt)
+     {
++#ifdef HAVE_KRB4
+       des_key_sched(session, sched);
+       memmove(ivec, session, sizeof(ivec));
++#else
++      /* The session key only gets stored if auth happens in krb4 to
++         begin with. If you don't have krb4, you can't possibly be
++         coming up with a valid session key. */
++      return MR_NO_KRB4;
++#endif
+     }
+ 
+   while (n_to_send > 0)
+@@ -120,6 +133,7 @@
+ 	}
+       if (encrypt)
+ 	{
++#ifdef HAVE_KRB4
+ 	  memset(data + n, 0, sizeof(data) -n);
+ 	  des_pcbc_encrypt(data, enc, (n + 7) & ~7, sched, ivec, 0);
+ 	  /* save vector to continue chaining */
+@@ -128,6 +142,7 @@
+ 	  /* round up to multiple of 8 */
+ 	  n = (n + 7) & ~7;
+ 	  code = send_string(conn, enc, n);
++#endif
+ 	}
+       else
+ 	code = send_string(conn, data, n);
+Index: debathena-moira-4.0.0+cvs20090409/update/update_server.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/update/update_server.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/update/update_server.c	2009-04-14 18:04:03.000000000 -0400
+@@ -25,7 +25,9 @@
+ #include <unistd.h>
+ #include <syslog.h>
+ 
++#ifdef HAVE_KRB4
+ #include <des.h>
++#endif
+ #include "update.h"
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/update/update_server.c,v 1.26 2006-08-22 17:36:26 zacheiss Exp $");
+@@ -33,7 +35,9 @@
+ char *whoami, *hostname;
+ 
+ int have_authorization = 0;
++#ifdef HAVE_KRB4
+ des_cblock session;
++#endif
+ int uid = 0;
+ 
+ void child_handler(int signal);
+@@ -44,7 +48,9 @@
+   char *str;
+   void (*proc)(int, char *);
+ } dispatch_table[] = {
++#ifdef HAVE_KRB4
+   { "AUTH_002", auth_002 },
++#endif
+   { "AUTH_003", auth_003 },
+   { "XFER_002", xfer_002 },
+   { "XFER_003", xfer_003 },
+Index: debathena-moira-4.0.0+cvs20090409/clients/mailmaint/mailmaint.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/clients/mailmaint/mailmaint.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/clients/mailmaint/mailmaint.c	2009-04-14 18:04:03.000000000 -0400
+@@ -31,8 +31,6 @@
+ #include <unistd.h>
+ #endif
+ 
+-#include <krb.h>
+-
+ #ifdef _WIN32
+ #define INPUT_MASK 0xff
+ #ifdef getchar
+Index: debathena-moira-4.0.0+cvs20090409/update/auth_003.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/update/auth_003.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/update/auth_003.c	2009-04-14 18:04:03.000000000 -0400
+@@ -15,7 +15,11 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
++#ifdef HAVE_KRB4
+ #include <krb.h>
++#else
++#include <mr_krb.h>
++#endif
+ #include <krb5.h>
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/update/auth_003.c,v 1.2 2006-08-22 17:36:26 zacheiss Exp $");
+@@ -44,6 +48,7 @@
+   char *p, *first, *data;
+   char name[ANAME_SZ], inst[INST_SZ], realm[REALM_SZ];
+   char aname[ANAME_SZ], ainst[INST_SZ], arealm[REALM_SZ];
++  char *lrealm = NULL;
+   size_t size;
+   long code;
+   struct utsname uts;
+@@ -143,7 +148,11 @@
+     {
+       strcpy(aname, master);
+       strcpy(ainst, "");
+-      if (krb_get_lrealm(arealm, 1))
++      if (!krb5_get_default_realm(context, &lrealm))
++        {
++          strcpy(arealm, lrealm);
++        }
++      else
+ 	strcpy(arealm, KRB_REALM);
+     }
+   code = EPERM;
+@@ -159,6 +168,8 @@
+   have_authorization = 1;
+ 
+  out:
++  if (lrealm)
++    free(lrealm);
+   if (client)
+     krb5_free_principal(context, client);
+   if (server)
+Index: debathena-moira-4.0.0+cvs20090409/include/moira.h
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/include/moira.h	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/include/moira.h	2009-04-14 18:04:03.000000000 -0400
+@@ -115,6 +115,9 @@
+ /* prototypes from kname_unparse.c */
+ char *mr_kname_unparse(char *p, char *i, char *r);
+ 
++/* prototypes from kname_parse.c */
++int mr_kname_parse(char *np, char *ip, char *rp, char *fullname);
++
+ /* prototypes from nfsparttype.c */
+ char *parse_filesys_type(char *fs_type_name);
+ char *format_filesys_type(char *fs_status);
+Index: debathena-moira-4.0.0+cvs20090409/include/mr_krb.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ debathena-moira-4.0.0+cvs20090409/include/mr_krb.h	2009-04-14 18:04:03.000000000 -0400
+@@ -0,0 +1,20 @@
++/* $Id$
++ *
++ * Copyright (C) 2009 by the Massachusetts Institute of Technology
++ *
++ * Define some useful constants that used to be provided by the krb4
++ * libraries.
++ *
++ */
++
++#define ANAME_SZ      40
++#define INST_SZ       40
++#define REALM_SZ      40
++/* include space for '.' and '@' */
++#define MAX_K_NAME_SZ (ANAME_SZ + INST_SZ + REALM_SZ + 2)
++
++#define KRB_REALM "ATHENA.MIT.EDU"
++
++#define kname_parse mr_kname_parse
++
++#define ERROR_TABLE_BASE_krb                     (39525376L)
+Index: debathena-moira-4.0.0+cvs20090409/lib/Makefile.in
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/lib/Makefile.in	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/lib/Makefile.in	2009-04-14 18:04:03.000000000 -0400
+@@ -16,7 +16,7 @@
+ BUILDTOP=..
+ 
+ OBJS=	critical.o fixhost.o fixname.o \
+-	hash.o kname_unparse.o krb_et.o mr_access.o mr_auth.o \
++	hash.o kname_unparse.o kname_parse.o krb_et.o mr_access.o mr_auth.o \
+ 	mr_call.o mr_connect.o mr_et.o mr_init.o mr_ops.o mr_query.o \
+ 	nfsparttype.o sq.o strs.o ureg_err.o
+ 
+Index: debathena-moira-4.0.0+cvs20090409/lib/kname_parse.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ debathena-moira-4.0.0+cvs20090409/lib/kname_parse.c	2009-04-14 18:04:03.000000000 -0400
+@@ -0,0 +1,119 @@
++/* $Id$
++ *
++ * Provide a copy of kname_parse() from krb4 for when krb4 is no
++ * longer available.
++ *
++ * Copyright (C) 2009 by the Massachusetts Institute of Technology
++ * For copying and distribution information, please see the file
++ * <mit-copyright.h>.
++ */
++
++#include <mit-copyright.h>
++#include <moira.h>
++
++#include <string.h>
++
++#ifdef HAVE_KRB4
++#include <krb.h>
++#else
++#include <mr_krb.h>
++
++#define KRBET_KNAME_FMT                          (39525457L)
++#define KNAME_FMT                                (KRBET_KNAME_FMT - ERROR_TABLE_BASE_krb)
++#endif
++
++RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/lib/kname_parse.c,v 1.0 2009-04-14 00:00:00 broder Exp $");
++
++#define NAME    0               /* which field are we in? */
++#define INST    1
++#define REALM   2
++
++int mr_kname_parse(char *np, char *ip, char *rp, char *fullname)
++{
++  char buf[MAX_K_NAME_SZ];
++  char *rnext, *wnext;        /* next char to read, write */
++  register char c;
++  int backslash;
++  int field;
++
++  backslash = 0;
++  rnext = buf;
++  wnext = np;
++  field = NAME;
++
++  if (strlen(fullname) > MAX_K_NAME_SZ)
++    return KNAME_FMT;
++  (void) strcpy(buf, fullname);
++
++  while ((c = *rnext++)) {
++    if (backslash) {
++      *wnext++ = c;
++      backslash = 0;
++      continue;
++    }
++    switch (c) {
++    case '\\':
++      backslash++;
++      break;
++    case '.':
++      switch (field) {
++      case NAME:
++        if (wnext == np)
++          return KNAME_FMT;
++        *wnext = '\0';
++        field = INST;
++        wnext = ip;
++        break;
++      case INST:          /* We now allow period in instance */
++      case REALM:
++        *wnext++ = c;
++        break;
++      default:
++        return KNAME_FMT;
++      }
++      break;
++    case '@':
++      switch (field) {
++      case NAME:
++        if (wnext == np)
++          return KNAME_FMT;
++        *ip = '\0';
++        /* fall through */
++      case INST:
++        *wnext = '\0';
++        field = REALM;
++        wnext = rp;
++        break;
++      case REALM:
++        return KNAME_FMT;
++      default:
++        return KNAME_FMT;
++      }
++      break;
++    default:
++      *wnext++ = c;
++    }
++    /*
++     * Paranoia: check length each time through to ensure that we
++     * don't overwrite things.
++     */
++    switch (field) {
++    case NAME:
++      if (wnext - np >= ANAME_SZ)
++        return KNAME_FMT;
++      break;
++    case INST:
++      if (wnext - ip >= INST_SZ)
++        return KNAME_FMT;
++      break;
++    case REALM:
++      if (wnext - rp >= REALM_SZ)
++        return KNAME_FMT;
++      break;
++    default:
++      return KNAME_FMT;
++    }
++  }
++  *wnext = '\0';
++  return 0;
++}
+Index: debathena-moira-4.0.0+cvs20090409/lib/kname_unparse.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/lib/kname_unparse.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/lib/kname_unparse.c	2009-04-14 18:04:03.000000000 -0400
+@@ -13,8 +13,11 @@
+ 
+ #include <stdio.h>
+ 
+-#include <des.h>
++#ifdef HAVE_KRB5
+ #include <krb.h>
++#else
++#include <mr_krb.h>
++#endif
+ 
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/lib/kname_unparse.c,v 1.5 2004-07-20 06:47:46 zacheiss Exp $");
+ 
+Index: debathena-moira-4.0.0+cvs20090409/clients/moira/user.c
+===================================================================
+--- debathena-moira-4.0.0+cvs20090409.orig/clients/moira/user.c	2009-04-14 17:55:59.000000000 -0400
++++ debathena-moira-4.0.0+cvs20090409/clients/moira/user.c	2009-04-14 18:04:03.000000000 -0400
+@@ -25,8 +25,6 @@
+ #include <string.h>
+ #include <time.h>
+ 
+-#include <krb.h>
+-
+ RCSID("$Header: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/clients/moira/user.c,v 1.74 2009-03-31 19:13:09 zacheiss Exp $");
+ 
+ void CorrectCapitalization(char **name);

Added: trunk/third/moira/debian/patches/series
===================================================================
--- trunk/third/moira/debian/patches/series	2009-04-14 05:45:23 UTC (rev 23745)
+++ trunk/third/moira/debian/patches/series	2009-04-15 19:39:08 UTC (rev 23746)
@@ -0,0 +1 @@
+build-without-krb4

Modified: trunk/third/moira/debian/rules
===================================================================
--- trunk/third/moira/debian/rules	2009-04-14 05:45:23 UTC (rev 23745)
+++ trunk/third/moira/debian/rules	2009-04-15 19:39:08 UTC (rev 23746)
@@ -1,10 +1,13 @@
 #!/usr/bin/make -f
 
+DEB_AUTO_UPDATE_AUTOCONF=2.59
+
 include /usr/share/cdbs/1/rules/debhelper.mk
 include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
 
 KRB5_VERSION=$(shell dpkg-query -W -f '$${Version}\n' libkrb5-dev)
-ifeq (yes,$(shell dpkg --compare-versions '$KRB5_VERSION' lt '1.6.dfsg.4~beta1-7' && echo yes))
+ifeq (yes,$(shell dpkg --compare-versions '$(KRB5_VERSION)' lt '1.6.dfsg.4~beta1-7' && echo yes))
     DEB_CONFIGURE_EXTRA_FLAGS += --with-krb4=$(shell krb5-config --prefix krb4)
 else
     DEB_CONFIGURE_EXTRA_FLAGS += --without-krb4


home help back first fref pref prev next nref lref last post