Hi Gerrit & Stephen,

  I think you've pindowned the problem.  I hope it can work.  Gerrit, if
you need access to an amd64 computer, let me know and I'll do
arrangements so that you can check strace and other things for cfs.

Cheers,

Sergio.

On Mon, Oct 16, 2006 at 10:07:59AM +0000, Gerrit Pape wrote:
> tags 391516 + patch
> quit
> 
> On Mon, Oct 16, 2006 at 12:49:39AM +0200, Stefan Westerfeld wrote:
> > I can confirm that the problem exists on Debian/AMD64. Maybe this link
> > which I found with google helps to solve the problem:
> > 
> > http://lists.freebsd.org/pipermail/freebsd-amd64/2005-January/003173.html
> > 
> > The mail refers to a freebsd cfs tarball which was modified to be 64bit
> > clean. Probably the relevant changes made to that version of cfs could
> > be backfolded into the Debian package.
> 
> Hi Stefan, thanks a lot for this pointer.  I found a patch that needs
> just slight modifications to apply to the Debian package source.
> 
> Regards, Gerrit.

> Index: cfs.h
> ===================================================================
> RCS file: /cvs/cfs/cfs.h,v
> retrieving revision 1.4
> diff -u -r1.4 cfs.h
> --- cfs.h     31 Mar 2002 14:59:52 -0000      1.4
> +++ cfs.h     16 Oct 2006 10:06:29 -0000
> @@ -23,6 +23,8 @@
>  #include "safer.h"
>  #include "cfs_bf.h"
>  
> +#include <inttypes.h>
> +
>  #define H_REG 0
>  #define H_ATTACH 0   /* same as regular */
>  #define H_ROOT 1
> @@ -57,10 +59,10 @@
>       u_char magic[8];/* 0x0123456789abcdef */
>       u_short htype;  /* 0=reg, 1=attachpt, 2=root(but notused) */
>       u_short instance;       /* which attach */
> -     u_long fileid;  /* inode # */
> +     uint32_t fileid;        /* inode # */
>       u_char check[8];/* we just encrypt the date and copy it here */
>  #ifdef SHORTLINKS
> -     u_long linkid;  /* To uniquify short links */
> +     uint32_t linkid;        /* To uniquify short links */
>       u_char pad[4];  /* empty */
>  #else
>       u_char pad[8];  /* empty */
> Index: cfs_bf.h
> ===================================================================
> RCS file: /cvs/cfs/cfs_bf.h,v
> retrieving revision 1.2
> diff -u -r1.2 cfs_bf.h
> --- cfs_bf.h  8 Oct 2001 03:10:18 -0000       1.2
> +++ cfs_bf.h  16 Oct 2006 10:06:29 -0000
> @@ -70,7 +70,7 @@
>   * the Alpha, otherwise they will not.  Strangly using the '8 byte'
>   * BF_LONG and the default 'non-pointer' inner loop is the best configuration
>   * for the Alpha */
> -#define BF_LONG unsigned long
> +#define BF_LONG unsigned int
>  
>  #define BF_ROUNDS    16
>  #define BF_BLOCK     8
> Index: cfs_des.c
> ===================================================================
> RCS file: /cvs/cfs/cfs_des.c,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 cfs_des.c
> --- cfs_des.c 8 Oct 2001 02:24:39 -0000       1.1.1.1
> +++ cfs_des.c 16 Oct 2006 10:06:31 -0000
> @@ -22,13 +22,15 @@
>   *   block_cipher(key, block, decrypting)
>   */
>  
> +#include <inttypes.h>
> +
>  #ifdef SOLARIS2X
>  #define bcopy(s, d, l)               memcpy(d, s, l)
>  #define bcmp(s, d, l)                (memcmp(s, d, l)? 1 : 0)
>  #endif
>  
> -static long  ip_low();
> -static long  ip_high();
> +static int32_t       ip_low();
> +static int32_t       ip_high();
>  static void  fp();
>  void des_key_setup();
>  
> @@ -36,7 +38,7 @@
>   *   Tables for Combined S and P Boxes
>   */
>  
> -static long  s0p[] = {
> +static int32_t  s0p[] = {
>  
> 0x00410100,0x00010000,0x40400000,0x40410100,0x00400000,0x40010100,0x40010000,0x40400000,
>  
> 0x40010100,0x00410100,0x00410000,0x40000100,0x40400100,0x00400000,0x00000000,0x40010000,
>  
> 0x00010000,0x40000000,0x00400100,0x00010100,0x40410100,0x00410000,0x40000100,0x00400100,
> @@ -47,7 +49,7 @@
>  
> 0x00010000,0x00400000,0x40400100,0x00410100,0x40000000,0x40410000,0x00000100,0x40010100,
>  };
>  
> -static long  s1p[] = {
> +static int32_t  s1p[] = {
>  
> 0x08021002,0x00000000,0x00021000,0x08020000,0x08000002,0x00001002,0x08001000,0x00021000,
>  
> 0x00001000,0x08020002,0x00000002,0x08001000,0x00020002,0x08021000,0x08020000,0x00000002,
>  
> 0x00020000,0x08001002,0x08020002,0x00001000,0x00021002,0x08000000,0x00000000,0x00020002,
> @@ -58,7 +60,7 @@
>  
> 0x08020002,0x00020000,0x00001002,0x08001000,0x08001002,0x00000002,0x08020000,0x00021000,
>  };
>  
> -static long  s2p[] = {
> +static int32_t  s2p[] = {
>  
> 0x20800000,0x00808020,0x00000020,0x20800020,0x20008000,0x00800000,0x20800020,0x00008020,
>  
> 0x00800020,0x00008000,0x00808000,0x20000000,0x20808020,0x20000020,0x20000000,0x20808000,
>  
> 0x00000000,0x20008000,0x00808020,0x00000020,0x20000020,0x20808020,0x00008000,0x20800000,
> @@ -69,7 +71,7 @@
>  
> 0x00800020,0x00000000,0x20808000,0x20000020,0x20800000,0x20008020,0x00000020,0x00808000,
>  };
>  
> -static long  s3p[] = {
> +static int32_t  s3p[] = {
>  
> 0x00080201,0x02000200,0x00000001,0x02080201,0x00000000,0x02080000,0x02000201,0x00080001,
>  
> 0x02080200,0x02000001,0x02000000,0x00000201,0x02000001,0x00080201,0x00080000,0x02000000,
>  
> 0x02080001,0x00080200,0x00000200,0x00000001,0x00080200,0x02000201,0x02080000,0x00000200,
> @@ -80,7 +82,7 @@
>  
> 0x00080001,0x00080200,0x02080000,0x02000201,0x00000201,0x02000000,0x02000001,0x02080200,
>  };
>  
> -static long  s4p[] = {
> +static int32_t  s4p[] = {
>  
> 0x01000000,0x00002000,0x00000080,0x01002084,0x01002004,0x01000080,0x00002084,0x01002000,
>  
> 0x00002000,0x00000004,0x01000004,0x00002080,0x01000084,0x01002004,0x01002080,0x00000000,
>  
> 0x00002080,0x01000000,0x00002004,0x00000084,0x01000080,0x00002084,0x00000000,0x01000004,
> @@ -91,7 +93,7 @@
>  
> 0x00002080,0x01002004,0x01000080,0x00000084,0x00000004,0x00002084,0x01002000,0x01000004,
>  };
>  
> -static long  s5p[] = {
> +static int32_t  s5p[] = {
>  
> 0x10000008,0x00040008,0x00000000,0x10040400,0x00040008,0x00000400,0x10000408,0x00040000,
>  
> 0x00000408,0x10040408,0x00040400,0x10000000,0x10000400,0x10000008,0x10040000,0x00040408,
>  
> 0x00040000,0x10000408,0x10040008,0x00000000,0x00000400,0x00000008,0x10040400,0x10040008,
> @@ -102,7 +104,7 @@
>  
> 0x00000400,0x10000008,0x10000408,0x10040400,0x10040000,0x00000408,0x00000008,0x10040008,
>  };
>  
> -static long  s6p[] = {
> +static int32_t  s6p[] = {
>  
> 0x00000800,0x00000040,0x00200040,0x80200000,0x80200840,0x80000800,0x00000840,0x00000000,
>  
> 0x00200000,0x80200040,0x80000040,0x00200800,0x80000000,0x00200840,0x00200800,0x80000040,
>  
> 0x80200040,0x00000800,0x80000800,0x80200840,0x00000000,0x00200040,0x80200000,0x00000840,
> @@ -113,7 +115,7 @@
>  
> 0x00200840,0x80000000,0x80000800,0x80200840,0x80200000,0x00200840,0x00200800,0x80000800,
>  };
>  
> -static long  s7p[] = {
> +static int32_t  s7p[] = {
>  
> 0x04100010,0x04104000,0x00004010,0x00000000,0x04004000,0x00100010,0x04100000,0x04104010,
>  
> 0x00000010,0x04000000,0x00104000,0x00004010,0x00104010,0x04004010,0x04000010,0x04100000,
>  
> 0x00004000,0x00104010,0x00100010,0x04004000,0x04104010,0x04000010,0x00000000,0x00104000,
> @@ -134,8 +136,8 @@
>  int decrypting;
>  {
>       register char *key;
> -     register long temp;
> -     register long left, right;
> +     register int32_t temp;
> +     register int32_t left, right;
>       register i;
>       register key_offset;
>       int j,k;
> @@ -199,8 +201,8 @@
>  int decrypting;
>  {
>       register char *key;
> -     register long temp;
> -     register long left, right;
> +     register int32_t temp;
> +     register int32_t left, right;
>       register i;
>       register key_offset;
>  
> @@ -240,78 +242,78 @@
>  /*
>   *   Final Permutation
>   */
> -static long  fph0[16] = {
> +static int32_t       fph0[16] = {
>  
> 0x00000000,0x40000000,0x00400000,0x40400000,0x00004000,0x40004000,0x00404000,0x40404000,
>  
> 0x00000040,0x40000040,0x00400040,0x40400040,0x00004040,0x40004040,0x00404040,0x40404040,
>  };
> -static long  fpl1[16] = {
> +static int32_t       fpl1[16] = {
>  
> 0x00000000,0x40000000,0x00400000,0x40400000,0x00004000,0x40004000,0x00404000,0x40404000,
>  
> 0x00000040,0x40000040,0x00400040,0x40400040,0x00004040,0x40004040,0x00404040,0x40404040,
>  };
> -static long  fph2[16] = {
> +static int32_t       fph2[16] = {
>  
> 0x00000000,0x10000000,0x00100000,0x10100000,0x00001000,0x10001000,0x00101000,0x10101000,
>  
> 0x00000010,0x10000010,0x00100010,0x10100010,0x00001010,0x10001010,0x00101010,0x10101010,
>  };
> -static long  fpl3[16] = {
> +static int32_t       fpl3[16] = {
>  
> 0x00000000,0x10000000,0x00100000,0x10100000,0x00001000,0x10001000,0x00101000,0x10101000,
>  
> 0x00000010,0x10000010,0x00100010,0x10100010,0x00001010,0x10001010,0x00101010,0x10101010,
>  };
> -static long  fph4[16] = {
> +static int32_t       fph4[16] = {
>  
> 0x00000000,0x04000000,0x00040000,0x04040000,0x00000400,0x04000400,0x00040400,0x04040400,
>  
> 0x00000004,0x04000004,0x00040004,0x04040004,0x00000404,0x04000404,0x00040404,0x04040404,
>  };
> -static long  fpl5[16] = {
> +static int32_t       fpl5[16] = {
>  
> 0x00000000,0x04000000,0x00040000,0x04040000,0x00000400,0x04000400,0x00040400,0x04040400,
>  
> 0x00000004,0x04000004,0x00040004,0x04040004,0x00000404,0x04000404,0x00040404,0x04040404,
>  };
> -static long  fph6[16] = {
> +static int32_t       fph6[16] = {
>  
> 0x00000000,0x01000000,0x00010000,0x01010000,0x00000100,0x01000100,0x00010100,0x01010100,
>  
> 0x00000001,0x01000001,0x00010001,0x01010001,0x00000101,0x01000101,0x00010101,0x01010101,
>  };
> -static long  fpl7[16] = {
> +static int32_t       fpl7[16] = {
>  
> 0x00000000,0x01000000,0x00010000,0x01010000,0x00000100,0x01000100,0x00010100,0x01010100,
>  
> 0x00000001,0x01000001,0x00010001,0x01010001,0x00000101,0x01000101,0x00010101,0x01010101,
>  };
> -static long  fph8[16] = {
> +static int32_t       fph8[16] = {
>  
> 0x00000000,0x80000000,0x00800000,0x80800000,0x00008000,0x80008000,0x00808000,0x80808000,
>  
> 0x00000080,0x80000080,0x00800080,0x80800080,0x00008080,0x80008080,0x00808080,0x80808080,
>  };
> -static long  fpl9[16] = {
> +static int32_t       fpl9[16] = {
>  
> 0x00000000,0x80000000,0x00800000,0x80800000,0x00008000,0x80008000,0x00808000,0x80808000,
>  
> 0x00000080,0x80000080,0x00800080,0x80800080,0x00008080,0x80008080,0x00808080,0x80808080,
>  };
> -static long  fpha[16] = {
> +static int32_t       fpha[16] = {
>  
> 0x00000000,0x20000000,0x00200000,0x20200000,0x00002000,0x20002000,0x00202000,0x20202000,
>  
> 0x00000020,0x20000020,0x00200020,0x20200020,0x00002020,0x20002020,0x00202020,0x20202020,
>  };
> -static long  fplb[16] = {
> +static int32_t       fplb[16] = {
>  
> 0x00000000,0x20000000,0x00200000,0x20200000,0x00002000,0x20002000,0x00202000,0x20202000,
>  
> 0x00000020,0x20000020,0x00200020,0x20200020,0x00002020,0x20002020,0x00202020,0x20202020,
>  };
> -static long  fphc[16] = {
> +static int32_t       fphc[16] = {
>  
> 0x00000000,0x08000000,0x00080000,0x08080000,0x00000800,0x08000800,0x00080800,0x08080800,
>  
> 0x00000008,0x08000008,0x00080008,0x08080008,0x00000808,0x08000808,0x00080808,0x08080808,
>  };
> -static long  fpld[16] = {
> +static int32_t       fpld[16] = {
>  
> 0x00000000,0x08000000,0x00080000,0x08080000,0x00000800,0x08000800,0x00080800,0x08080800,
>  
> 0x00000008,0x08000008,0x00080008,0x08080008,0x00000808,0x08000808,0x00080808,0x08080808,
>  };
> -static long  fphe[16] = {
> +static int32_t       fphe[16] = {
>  
> 0x00000000,0x02000000,0x00020000,0x02020000,0x00000200,0x02000200,0x00020200,0x02020200,
>  
> 0x00000002,0x02000002,0x00020002,0x02020002,0x00000202,0x02000202,0x00020202,0x02020202,
>  };
> -static long  fplf[16] = {
> +static int32_t       fplf[16] = {
>  
> 0x00000000,0x02000000,0x00020000,0x02020000,0x00000200,0x02000200,0x00020200,0x02020200,
>  
> 0x00000002,0x02000002,0x00020002,0x02020002,0x00000202,0x02000202,0x00020202,0x02020202,
>  };
>  
>  static void
>  fp(left, right, text)
> -long left, right;
> +int32_t left, right;
>  char text[8];
>  {
> -     register unsigned long low, high;
> -     register unsigned long temp;
> +     register uint32_t low, high;
> +     register uint32_t temp;
>  
>       temp = left;
>       high = fph0[temp & 0xf];
> @@ -358,140 +360,140 @@
>  /*
>   *   Initial Permutation
>   */
> -static long  ipl0[16] = {
> +static int32_t       ipl0[16] = {
>  0x00000000,
>  
> 0x00008000,0x00000000,0x00008000,0x00000080,0x00008080,0x00000080,0x00008080,0x00000000,
>  
> 0x00008000,0x00000000,0x00008000,0x00000080,0x00008080,0x00000080,0x00008080,};
> -static long  iph0[16] = {
> +static int32_t       iph0[16] = {
>  0x00000000,
>  
> 0x00000000,0x00008000,0x00008000,0x00000000,0x00000000,0x00008000,0x00008000,0x00000080,
>  
> 0x00000080,0x00008080,0x00008080,0x00000080,0x00000080,0x00008080,0x00008080,};
> -static long  ipl1[16] = {
> +static int32_t       ipl1[16] = {
>  0x00000000,
>  
> 0x80000000,0x00000000,0x80000000,0x00800000,0x80800000,0x00800000,0x80800000,0x00000000,
>  
> 0x80000000,0x00000000,0x80000000,0x00800000,0x80800000,0x00800000,0x80800000,};
> -static long  iph1[16] = {
> +static int32_t       iph1[16] = {
>  0x00000000,
>  
> 0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x80000000,0x80000000,0x00800000,
>  
> 0x00800000,0x80800000,0x80800000,0x00800000,0x00800000,0x80800000,0x80800000,};
> -static long  ipl2[16] = {
> +static int32_t       ipl2[16] = {
>  0x00000000,
>  
> 0x00004000,0x00000000,0x00004000,0x00000040,0x00004040,0x00000040,0x00004040,0x00000000,
>  
> 0x00004000,0x00000000,0x00004000,0x00000040,0x00004040,0x00000040,0x00004040,};
> -static long  iph2[16] = {
> +static int32_t       iph2[16] = {
>  0x00000000,
>  
> 0x00000000,0x00004000,0x00004000,0x00000000,0x00000000,0x00004000,0x00004000,0x00000040,
>  
> 0x00000040,0x00004040,0x00004040,0x00000040,0x00000040,0x00004040,0x00004040,};
> -static long  ipl3[16] = {
> +static int32_t       ipl3[16] = {
>  0x00000000,
>  
> 0x40000000,0x00000000,0x40000000,0x00400000,0x40400000,0x00400000,0x40400000,0x00000000,
>  
> 0x40000000,0x00000000,0x40000000,0x00400000,0x40400000,0x00400000,0x40400000,};
> -static long  iph3[16] = {
> +static int32_t       iph3[16] = {
>  0x00000000,
>  
> 0x00000000,0x40000000,0x40000000,0x00000000,0x00000000,0x40000000,0x40000000,0x00400000,
>  
> 0x00400000,0x40400000,0x40400000,0x00400000,0x00400000,0x40400000,0x40400000,};
> -static long  ipl4[16] = {
> +static int32_t       ipl4[16] = {
>  0x00000000,
>  
> 0x00002000,0x00000000,0x00002000,0x00000020,0x00002020,0x00000020,0x00002020,0x00000000,
>  
> 0x00002000,0x00000000,0x00002000,0x00000020,0x00002020,0x00000020,0x00002020,};
> -static long  iph4[16] = {
> +static int32_t       iph4[16] = {
>  0x00000000,
>  
> 0x00000000,0x00002000,0x00002000,0x00000000,0x00000000,0x00002000,0x00002000,0x00000020,
>  
> 0x00000020,0x00002020,0x00002020,0x00000020,0x00000020,0x00002020,0x00002020,};
> -static long  ipl5[16] = {
> +static int32_t       ipl5[16] = {
>  0x00000000,
>  
> 0x20000000,0x00000000,0x20000000,0x00200000,0x20200000,0x00200000,0x20200000,0x00000000,
>  
> 0x20000000,0x00000000,0x20000000,0x00200000,0x20200000,0x00200000,0x20200000,};
> -static long  iph5[16] = {
> +static int32_t       iph5[16] = {
>  0x00000000,
>  
> 0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x20000000,0x20000000,0x00200000,
>  
> 0x00200000,0x20200000,0x20200000,0x00200000,0x00200000,0x20200000,0x20200000,};
> -static long  ipl6[16] = {
> +static int32_t       ipl6[16] = {
>  0x00000000,
>  
> 0x00001000,0x00000000,0x00001000,0x00000010,0x00001010,0x00000010,0x00001010,0x00000000,
>  
> 0x00001000,0x00000000,0x00001000,0x00000010,0x00001010,0x00000010,0x00001010,};
> -static long  iph6[16] = {
> +static int32_t       iph6[16] = {
>  0x00000000,
>  
> 0x00000000,0x00001000,0x00001000,0x00000000,0x00000000,0x00001000,0x00001000,0x00000010,
>  
> 0x00000010,0x00001010,0x00001010,0x00000010,0x00000010,0x00001010,0x00001010,};
> -static long  ipl7[16] = {
> +static int32_t       ipl7[16] = {
>  0x00000000,
>  
> 0x10000000,0x00000000,0x10000000,0x00100000,0x10100000,0x00100000,0x10100000,0x00000000,
>  
> 0x10000000,0x00000000,0x10000000,0x00100000,0x10100000,0x00100000,0x10100000,};
> -static long  iph7[16] = {
> +static int32_t       iph7[16] = {
>  0x00000000,
>  
> 0x00000000,0x10000000,0x10000000,0x00000000,0x00000000,0x10000000,0x10000000,0x00100000,
>  
> 0x00100000,0x10100000,0x10100000,0x00100000,0x00100000,0x10100000,0x10100000,};
> -static long  ipl8[16] = {
> +static int32_t       ipl8[16] = {
>  0x00000000,
>  
> 0x00000800,0x00000000,0x00000800,0x00000008,0x00000808,0x00000008,0x00000808,0x00000000,
>  
> 0x00000800,0x00000000,0x00000800,0x00000008,0x00000808,0x00000008,0x00000808,};
> -static long  iph8[16] = {
> +static int32_t       iph8[16] = {
>  0x00000000,
>  
> 0x00000000,0x00000800,0x00000800,0x00000000,0x00000000,0x00000800,0x00000800,0x00000008,
>  
> 0x00000008,0x00000808,0x00000808,0x00000008,0x00000008,0x00000808,0x00000808,};
> -static long  ipl9[16] = {
> +static int32_t       ipl9[16] = {
>  0x00000000,
>  
> 0x08000000,0x00000000,0x08000000,0x00080000,0x08080000,0x00080000,0x08080000,0x00000000,
>  
> 0x08000000,0x00000000,0x08000000,0x00080000,0x08080000,0x00080000,0x08080000,};
> -static long  iph9[16] = {
> +static int32_t       iph9[16] = {
>  0x00000000,
>  
> 0x00000000,0x08000000,0x08000000,0x00000000,0x00000000,0x08000000,0x08000000,0x00080000,
>  
> 0x00080000,0x08080000,0x08080000,0x00080000,0x00080000,0x08080000,0x08080000,};
> -static long  ipla[16] = {
> +static int32_t       ipla[16] = {
>  0x00000000,
>  
> 0x00000400,0x00000000,0x00000400,0x00000004,0x00000404,0x00000004,0x00000404,0x00000000,
>  
> 0x00000400,0x00000000,0x00000400,0x00000004,0x00000404,0x00000004,0x00000404,};
> -static long  ipha[16] = {
> +static int32_t       ipha[16] = {
>  0x00000000,
>  
> 0x00000000,0x00000400,0x00000400,0x00000000,0x00000000,0x00000400,0x00000400,0x00000004,
>  
> 0x00000004,0x00000404,0x00000404,0x00000004,0x00000004,0x00000404,0x00000404,};
> -static long  iplb[16] = {
> +static int32_t       iplb[16] = {
>  0x00000000,
>  
> 0x04000000,0x00000000,0x04000000,0x00040000,0x04040000,0x00040000,0x04040000,0x00000000,
>  
> 0x04000000,0x00000000,0x04000000,0x00040000,0x04040000,0x00040000,0x04040000,};
> -static long  iphb[16] = {
> +static int32_t       iphb[16] = {
>  0x00000000,
>  
> 0x00000000,0x04000000,0x04000000,0x00000000,0x00000000,0x04000000,0x04000000,0x00040000,
>  
> 0x00040000,0x04040000,0x04040000,0x00040000,0x00040000,0x04040000,0x04040000,};
> -static long  iplc[16] = {
> +static int32_t       iplc[16] = {
>  0x00000000,
>  
> 0x00000200,0x00000000,0x00000200,0x00000002,0x00000202,0x00000002,0x00000202,0x00000000,
>  
> 0x00000200,0x00000000,0x00000200,0x00000002,0x00000202,0x00000002,0x00000202,};
> -static long  iphc[16] = {
> +static int32_t       iphc[16] = {
>  0x00000000,
>  
> 0x00000000,0x00000200,0x00000200,0x00000000,0x00000000,0x00000200,0x00000200,0x00000002,
>  
> 0x00000002,0x00000202,0x00000202,0x00000002,0x00000002,0x00000202,0x00000202,};
> -static long  ipld[16] = {
> +static int32_t       ipld[16] = {
>  0x00000000,
>  
> 0x02000000,0x00000000,0x02000000,0x00020000,0x02020000,0x00020000,0x02020000,0x00000000,
>  
> 0x02000000,0x00000000,0x02000000,0x00020000,0x02020000,0x00020000,0x02020000,};
> -static long  iphd[16] = {
> +static int32_t       iphd[16] = {
>  0x00000000,
>  
> 0x00000000,0x02000000,0x02000000,0x00000000,0x00000000,0x02000000,0x02000000,0x00020000,
>  
> 0x00020000,0x02020000,0x02020000,0x00020000,0x00020000,0x02020000,0x02020000,};
> -static long  iple[16] = {
> +static int32_t       iple[16] = {
>  0x00000000,
>  
> 0x00000100,0x00000000,0x00000100,0x00000001,0x00000101,0x00000001,0x00000101,0x00000000,
>  
> 0x00000100,0x00000000,0x00000100,0x00000001,0x00000101,0x00000001,0x00000101,};
> -static long  iphe[16] = {
> +static int32_t       iphe[16] = {
>  0x00000000,
>  
> 0x00000000,0x00000100,0x00000100,0x00000000,0x00000000,0x00000100,0x00000100,0x00000001,
>  
> 0x00000001,0x00000101,0x00000101,0x00000001,0x00000001,0x00000101,0x00000101,};
> -static long  iplf[16] = {
> +static int32_t       iplf[16] = {
>  0x00000000,
>  
> 0x01000000,0x00000000,0x01000000,0x00010000,0x01010000,0x00010000,0x01010000,0x00000000,
>  
> 0x01000000,0x00000000,0x01000000,0x00010000,0x01010000,0x00010000,0x01010000,};
> -static long  iphf[16] = {
> +static int32_t       iphf[16] = {
>  0x00000000,
>  
> 0x00000000,0x01000000,0x01000000,0x00000000,0x00000000,0x01000000,0x01000000,0x00010000,
>  
> 0x00010000,0x01010000,0x01010000,0x00010000,0x00010000,0x01010000,0x01010000,};
>  
> -static long
> +static int32_t
>  ip_low(block)
>  register char block[8];
>  {
> -     register long l;
> +     register int32_t l;
>  
>       l  = ipl1[block[0] & 0xf];
>       l |= ipl0[(block[0] >> 4) & 0xf];
> @@ -512,11 +514,11 @@
>       return l;
>  }
>  
> -static long
> +static int32_t
>  ip_high(block)
>  register char block[8];
>  {
> -     register long l;
> +     register int32_t l;
>  
>       l  = iph1[block[0] & 0xf];
>       l |= iph0[(block[0] >> 4) & 0xf];
> @@ -962,7 +964,7 @@
>    int size;
>  {
>      int i;
> -    struct {long fo; char key[9];} s;
> +    struct {int32_t fo; char key[9];} s;
>  
>      bcopy("encrypt!",s.key,8);
>  
> Index: cfs_fh.c
> ===================================================================
> RCS file: /cvs/cfs/cfs_fh.c,v
> retrieving revision 1.9
> diff -u -r1.9 cfs_fh.c
> --- cfs_fh.c  11 Jul 2006 21:01:24 -0000      1.9
> +++ cfs_fh.c  16 Oct 2006 10:06:32 -0000
> @@ -61,7 +61,7 @@
>  }
>  #endif
>  
> -#define hash(x) ((u_long)((x)&HMASK))
> +#define hash(x) ((uint32_t)((x)&HMASK))
>  int inst = 0;/* starting point */
>  instance *instances[NINSTANCES];
>  
> @@ -135,7 +135,6 @@
>       int headlen;
>       int writemore=0;
>       struct stat sb;
> -     u_long mask = ~0;       /*tells us whether to expand file */
>       char buf[8216]; /* big enough, may not even need it */
>  
>       /* first, normalize to the proper boundries */
> @@ -833,7 +832,7 @@
>       char vect[9];
>       union{
>               u_char ch[9];
> -             u_long i[2];
> +             uint32_t i[2];
>       } buf;
>       char linkname[NFS_MAXPATHLEN+1];
>       
> @@ -862,8 +861,8 @@
>               /*
>               sprintf((char 
> *)buf,"%08x",(u_long)sb.st_ino+(u_long)sb.st_ctime);
>               */
> -             buf.i[0]=(u_long)sb.st_ino;
> -             buf.i[1]=(u_long)sb.st_ctime;
> +             buf.i[0]=(uint32_t)sb.st_ino;
> +             buf.i[1]=(uint32_t)sb.st_ctime;
>               q_block_cipher("fixedkey",&buf,1);
>               /* des is just used here as a hash fn to spread the bits */
>               /* since we only use 32 bits of the result, its a nonperfect */
> @@ -1228,7 +1227,7 @@
>     break anything */
>  struct dirent *
>  rootrd(cookie)
> -     long cookie;
> +     int32_t cookie;
>  {
>       static struct dirent d;
>  
> Index: cfs_nfs.c
> ===================================================================
> RCS file: /cvs/cfs/cfs_nfs.c,v
> retrieving revision 1.3
> diff -u -r1.3 cfs_nfs.c
> --- cfs_nfs.c 2 Apr 2004 20:14:02 -0000       1.3
> +++ cfs_nfs.c 16 Oct 2006 10:06:32 -0000
> @@ -843,12 +843,11 @@
>       static DIR *dp=NULL;
>       static struct dirent *dent;
>       entry **prev;
> -     long loc;
>       char s1[NFS_MAXNAMLEN+1];
>       char *s;
>       cfskey *key;
> -     static long curcookie=0;
> -     long cookie;
> +     static int32_t curcookie=0;
> +     int32_t cookie;
>       int eof;
>       int ne;
>       int bytes;
> @@ -910,7 +909,7 @@
>               else if (strcmp(s,"..")==0)     /* parent */
>                       entrytab[ne].fileid=fhpid(h);
>               else entrytab[ne].fileid=dent->d_fileno;
> -             *(unsigned long*)entrytab[ne].cookie = htonl(cookie);
> +             *(int32_t*)entrytab[ne].cookie = htonl(cookie);
>               *prev = &entrytab[ne];
>               prev = &entrytab[ne].nextentry;
>               entrytab[ne].nextentry=NULL;
> @@ -930,12 +929,12 @@
>  
>  DIR *curdir;
>  int curdirid=0;
> -long curcookie;
> +int32_t curcookie;
>  
>  DIR *
>  cfsopendir(dir,cookie)
>       cfs_fileid *dir;
> -     long cookie;
> +     int32_t cookie;
>  {
>       DIR *ret;
>       DIR *fhopendir();
> @@ -1115,7 +1114,7 @@
>       typedef char str[NFS_MAXNAMLEN+1];
>       static str names[MAXENTRIES];
>       entry **prev;
> -     long cookie;
> +     int32_t cookie;
>       int eof;
>       int ne;
>       int bytes;
> @@ -1127,7 +1126,7 @@
>       ne=0;
>       prev= &ret.readdirres_u.reply.entries;
>       *prev=NULL;
> -     cookie = ntohl(*(unsigned long*)(ap->cookie));
> +     cookie = ntohl(*(int32_t*)(ap->cookie));
>       eof=1;
>       
>       ret.status=NFS_OK;
> @@ -1146,7 +1145,7 @@
>               else entrytab[ne].fileid=dent->d_fileno;
>               cookie=dent->d_reclen;  /* may not work everywhere */
>               *prev = &entrytab[ne];
> -             *(unsigned long*)entrytab[ne].cookie = htonl(cookie);
> +             *(int32_t*)entrytab[ne].cookie = htonl(cookie);
>               prev = &entrytab[ne].nextentry;
>               entrytab[ne].nextentry=NULL;
>               ne++;
> Index: esm_cipher.c
> ===================================================================
> RCS file: /cvs/cfs/esm_cipher.c,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 esm_cipher.c
> --- esm_cipher.c      8 Oct 2001 02:24:39 -0000       1.1.1.1
> +++ esm_cipher.c      16 Oct 2006 10:06:33 -0000
> @@ -157,7 +157,7 @@
>       unsigned int n;
>       int i;
>       struct timeval tv;
> -     unsigned long truerand();
> +     uint32_t truerand();
>       unsigned char b[20];
>       
>       R_RandomInit(&rs);
> Index: shs.c
> ===================================================================
> RCS file: /cvs/cfs/shs.c,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 shs.c
> --- shs.c     8 Oct 2001 02:24:39 -0000       1.1.1.1
> +++ shs.c     16 Oct 2006 10:06:33 -0000
> @@ -50,9 +50,9 @@
>  #include <stdio.h>
>  #include "shs.h"
>  
> -static long nbits;
> -static unsigned long *h;
> -static unsigned long *w;
> +static int32_t nbits;
> +static uint32_t *h;
> +static uint32_t *w;
>  static void shs1();
>  /*
>  static void packl (unsigned long);
> @@ -61,7 +61,7 @@
>  static void opack(unsigned char);
>  */
>  
> -#define MASK        (unsigned long)0xffffffffL        /* in case more than 
> 32 bits per long */
> +#define MASK        (uint32_t)0xffffffffL        /* in case more than 32 
> bits per long */
>  
>  /*
>   * stick one byte into the current block; process the block when full
> @@ -70,14 +70,14 @@
>    unsigned char c;
>  {
>       int n32, nd32, shiftbits;
> -     register unsigned long x, mask, y;
> +     register uint32_t x, mask, y;
>       
>       nd32 = (int)(nbits >> 5);  /* nbits/32 */
>       n32 = (int)(nbits & 0x1f); /* nbits%32 */
>       shiftbits = 24-n32;
>       
> -     x = (unsigned long)(c<<shiftbits);
> -     mask = (unsigned long)(0xff << shiftbits);
> +     x = (uint32_t)(c<<shiftbits);
> +     mask = (uint32_t)(0xff << shiftbits);
>       mask = ~mask;
>       
>       y = w[nd32];
> @@ -97,7 +97,7 @@
>       int nd32;
>       
>       nd32 = (int)(nbits >> 5);
> -     w[nd32] = (u_long)(((u_long)c0<<24) | ((u_long)c1<<16) | 
> ((u_long)c2<<8) | (u_long)c3);
> +     w[nd32] = (uint32_t)(((uint32_t)c0<<24) | ((uint32_t)c1<<16) | 
> ((uint32_t)c2<<8) | (uint32_t)c3);
>       
>       nbits += 32;
>       if(nbits==512){
> @@ -111,7 +111,7 @@
>   */
>  static void
>  packl(x)
> -  unsigned long x;
> +  uint32_t x;
>  {
>       pack((unsigned char)(x>>24), (unsigned char)(x>>16),
>            (unsigned char)(x>>8), (unsigned char)(x>>0));
> @@ -123,24 +123,24 @@
>  static void
>  shs1()
>  {
> -     unsigned long *wp;
> -     unsigned long temp;
> -     unsigned long A, B, C, D, E;
> +     uint32_t *wp;
> +     uint32_t temp;
> +     uint32_t A, B, C, D, E;
>       int t;
>       
> -#define S(n,x) (u_long)(((x)<<(n))|((MASK&(x))>>(32-(n))))
> +#define S(n,x) (uint32_t)(((x)<<(n))|((MASK&(x))>>(32-(n))))
>       
>       wp = w;
>       t = 8;
>       do {
> -             wp[16] = S(1, (u_long)(wp[13]^wp[8]^wp[2]^wp[0]));
> -             wp[17] = S(1, (u_long)(wp[14]^wp[9]^wp[3]^wp[1]));
> -             wp[18] = S(1, (u_long)(wp[15]^wp[10]^wp[4]^wp[2]));
> -             wp[19] = S(1, (u_long)(wp[16]^wp[11]^wp[5]^wp[3]));
> -             wp[20] = S(1, (u_long)(wp[17]^wp[12]^wp[6]^wp[4]));
> -             wp[21] = S(1, (u_long)(wp[18]^wp[13]^wp[7]^wp[5]));
> -             wp[22] = S(1, (u_long)(wp[19]^wp[14]^wp[8]^wp[6]));
> -             wp[23] = S(1, (u_long)(wp[20]^wp[15]^wp[9]^wp[7]));
> +             wp[16] = S(1, (uint32_t)(wp[13]^wp[8]^wp[2]^wp[0]));
> +             wp[17] = S(1, (uint32_t)(wp[14]^wp[9]^wp[3]^wp[1]));
> +             wp[18] = S(1, (uint32_t)(wp[15]^wp[10]^wp[4]^wp[2]));
> +             wp[19] = S(1, (uint32_t)(wp[16]^wp[11]^wp[5]^wp[3]));
> +             wp[20] = S(1, (uint32_t)(wp[17]^wp[12]^wp[6]^wp[4]));
> +             wp[21] = S(1, (uint32_t)(wp[18]^wp[13]^wp[7]^wp[5]));
> +             wp[22] = S(1, (uint32_t)(wp[19]^wp[14]^wp[8]^wp[6]));
> +             wp[23] = S(1, (uint32_t)(wp[20]^wp[15]^wp[9]^wp[7]));
>               wp += 8;
>               t--;
>       } while (t > 0);
> @@ -154,22 +154,22 @@
>       t = 0;
>       while (t<20) {
>               temp = S(5,A) + E + w[t++];
> -             temp += (unsigned long)0x5a827999L + ((B&C)|(D&~B));
> +             temp += (uint32_t)0x5a827999L + ((B&C)|(D&~B));
>               E = D; D = C; C = S(30,B); B = A; A = temp;
>       }
>       while (t<40) {
>               temp = S(5,A) + E + w[t++];
> -             temp += (unsigned long)0x6ed9eba1L + (B^C^D);
> +             temp += (uint32_t)0x6ed9eba1L + (B^C^D);
>               E = D; D = C; C = S(30,B); B = A; A = temp;
>       }
>       while (t<60) {
>               temp = S(5,A) + E + w[t++];
> -             temp += (unsigned long)0x8f1bbcdcL + ((B&C)|(B&D)|(C&D));
> +             temp += (uint32_t)0x8f1bbcdcL + ((B&C)|(B&D)|(C&D));
>               E = D; D = C; C = S(30,B); B = A; A = temp;
>       }
>       while (t<80) {
>               temp = S(5,A) + E + w[t++];
> -             temp += (unsigned long)0xca62c1d6L + (B^C^D);
> +             temp += (uint32_t)0xca62c1d6L + (B^C^D);
>               E = D; D = C; C = S(30,B); B = A; A = temp;
>       }
>       h[0] = MASK&(h[0] + A);
> @@ -179,7 +179,7 @@
>       h[4] = MASK&(h[4] + E);
>  }
>  
> -#define CHARSTOLONG(wp,s,i) {*wp++ = 
> (u_long)((((u_long)(s[i])&0xff)<<24)|(((u_long)(s[i+1])&0xff)<<16)|(((u_long)(s[i+2])&0xff)<<8)|(u_long)(s[i+3]&0xff));}
> +#define CHARSTOLONG(wp,s,i) {*wp++ = 
> (uint32_t)((((uint32_t)(s[i])&0xff)<<24)|(((uint32_t)(s[i+1])&0xff)<<16)|(((uint32_t)(s[i+2])&0xff)<<8)|(uint32_t)(s[i+3]&0xff));}
>  
>  
>  void
> @@ -187,11 +187,11 @@
>    SHS_CTX *mdContext;
>  {
>       nbits = 0;
> -     mdContext->h[0] = (unsigned long)0x67452301L;
> -     mdContext->h[1] = (unsigned long)0xefcdab89L;
> -     mdContext->h[2] = (unsigned long)0x98badcfeL;
> -     mdContext->h[3] = (unsigned long)0x10325476L;
> -     mdContext->h[4] = (unsigned long)0xc3d2e1f0L;
> +     mdContext->h[0] = (uint32_t)0x67452301L;
> +     mdContext->h[1] = (uint32_t)0xefcdab89L;
> +     mdContext->h[2] = (uint32_t)0x98badcfeL;
> +     mdContext->h[3] = (uint32_t)0x10325476L;
> +     mdContext->h[4] = (uint32_t)0xc3d2e1f0L;
>       mdContext->totalLength = 0;
>  }
>  
> @@ -202,16 +202,16 @@
>    unsigned char *s;
>    unsigned int n;
>  {
> -     register unsigned long *wp;
> -     long nn = n;
> -     long i;
> +     register uint32_t *wp;
> +     int32_t nn = n;
> +     int32_t i;
>       
>       w = mdContext->w;
>       h = mdContext->h;
>       mdContext->totalLength += n;
>       
>       nbits = 0;
> -     n = n/(u_long)64;
> +     n = n/(uint32_t)64;
>       wp = w;
>       
>       while(n>0){
> @@ -240,7 +240,7 @@
>       while(i>3) {
>               CHARSTOLONG(wp,s,0);
>               s = (s + 4);
> -             nbits += (u_long)32;
> +             nbits += (uint32_t)32;
>               i -= 4;
>       }
>       while (i) {
> @@ -253,14 +253,14 @@
>  shsFinal(mdContext)
>    SHS_CTX *mdContext;
>  {
> -     long nn = mdContext->totalLength;
> +     int32_t nn = mdContext->totalLength;
>       w = mdContext->w;
>       h = mdContext->h;
>       
>       opack(128);
>       while(nbits != 448)opack(0);
> -     packl((unsigned long)(nn>>29));
> -     packl((unsigned long)(nn<<3));
> +     packl((uint32_t)(nn>>29));
> +     packl((uint32_t)(nn<<3));
>       
>       /* if(nbits != 0)
>          handle_exception(CRITICAL,"shsFinal(): nbits != 0\n");*/
> @@ -269,7 +269,7 @@
>  unsigned char *
>  qshs(s, n)
>    unsigned char *s;
> -  long n;
> +  int32_t n;
>  {
>          SHS_CTX *mdContext;
>       static SHS_CTX mdC;
> @@ -291,6 +291,7 @@
>       return ret;
>  }
>  
> +#if 0        /* This doesn't work and isn't used.  */
>  /*int fread(char *, int, int, FILE *);*/
>  
>  unsigned long *
> @@ -316,6 +317,5 @@
>  
>       return mdContext->h;
>  }
> -
> -
> +#endif
>  
> Index: shs.h
> ===================================================================
> RCS file: /cvs/cfs/shs.h,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 shs.h
> --- shs.h     8 Oct 2001 02:24:39 -0000       1.1.1.1
> +++ shs.h     16 Oct 2006 10:06:33 -0000
> @@ -1,7 +1,9 @@
> +#include <inttypes.h>
> +
>  typedef struct {
> -    long totalLength;
> -    unsigned long h[5];
> -    unsigned long w[80];
> +    int32_t totalLength;
> +    uint32_t h[5];
> +    uint32_t w[80];
>  } SHS_CTX;
>  
>  unsigned char *qshs();
> Index: truerand.c
> ===================================================================
> RCS file: /cvs/cfs/truerand.c,v
> retrieving revision 1.1.1.2
> diff -u -r1.1.1.2 truerand.c
> --- truerand.c        8 Oct 2001 02:27:34 -0000       1.1.1.2
> +++ truerand.c        16 Oct 2006 10:06:33 -0000
> @@ -89,6 +89,8 @@
>  #include <math.h>
>  #include <stdio.h>
>  
> +#include <inttypes.h>
> +
>  static jmp_buf env;
>  static unsigned count;
>  static unsigned ocount;
> @@ -115,7 +117,7 @@
>       tick();
>  }
>  
> -static unsigned long
> +static uint32_t
>  roulette()
>  {
>       if (setjmp(env))
> @@ -131,15 +133,15 @@
>   * basic interface to 32 bit truerand.
>   * note that any scheduled SIGALRM will be delayed by about .3 secs.
>   */
> -unsigned long
> +uint32_t
>  raw_truerand()
>  {
>       void (*oldalrm)();
>       struct itimerval it;
> -     unsigned long counts[12];
> +     uint32_t counts[12];
>       unsigned char *qshs();
>       unsigned char *r;
> -     unsigned long buf;
> +     uint32_t buf;
>       int i;
>  
>       getitimer(ITIMER_REAL, &it);
> @@ -153,7 +155,7 @@
>       setitimer(ITIMER_REAL, &it, NULL);
>  
>       r = qshs(counts,sizeof(counts));
> -     buf = *((unsigned long *) r);
> +     buf = *((uint32_t *) r);
>  
>       return buf;
>  }
> @@ -182,8 +184,8 @@
>   *   usage: 
>   *           unsigned char r8;
>   *           unsigned short r16;
> - *           unsigned long r32;
> - *           unsigned long trand8(), trand16(), trand32();
> + *           uint32_t r32;
> + *           uint32_t trand8(), trand16(), trand32();
>   *           r8=trand8();
>   *           r16=trand16();
>   *           r32=trand32();
> @@ -206,11 +208,11 @@
>   * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
>   */
>  
> -unsigned long randbyte()
> +uint32_t randbyte()
>  {
> -     unsigned long raw_truerand();
> +     uint32_t raw_truerand();
>       unsigned char *qshs();
> -     unsigned long r[2];
> +     uint32_t r[2];
>       unsigned char *hash;
>  
>       r[0]=raw_truerand(); r[1]=raw_truerand();
> @@ -218,17 +220,17 @@
>       return ((int) (*hash)) & 0xff;
>  }
>  
> -unsigned long trand8()
> +uint32_t trand8()
>  {
>       return randbyte();
>  }
>  
> -unsigned long trand16()
> +uint32_t trand16()
>  {
>       return randbyte() ^ (randbyte()<<8);
>  }
>  
> -unsigned long trand32()
> +uint32_t trand32()
>  {
>       return randbyte() ^ (randbyte()<<8)
>               ^ (randbyte()<<16) ^ (randbyte()<<24);
> Index: debian/changelog
> ===================================================================
> RCS file: /cvs/cfs/debian/changelog,v
> retrieving revision 1.38
> diff -u -r1.38 changelog
> --- debian/changelog  13 Sep 2006 11:49:08 -0000      1.38
> +++ debian/changelog  16 Oct 2006 10:06:33 -0000
> @@ -1,3 +1,11 @@
> +cfs (1.4.1-17.1) unstable; urgency=low
> +
> +  * apply patch from Ville-Pertti Keinonen to fix type issues on 64bit
> +    archs, http://www.freebsd.org/cgi/query-pr.cgi?pr=75878 (closes:
> +    #391516, thx Stefan Westerfeld).
> +
> + -- Gerrit Pape <[EMAIL PROTECTED]>  Mon, 16 Oct 2006 10:05:56 +0000
> +
>  cfs (1.4.1-17) unstable; urgency=high
>  
>    * cfs_fh.c: doencrypt(), dodecrypt(): make salt unsigned long, not int,



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to