mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-28 05:29:48 +00:00
d9983ccbfa
leaks, and two serious (even if not easily triggered) bugs.
211 lines
6.5 KiB
C
211 lines
6.5 KiB
C
diff -urN -x .svn ../../branches/vendor/mhash/lib/tiger.c ./lib/tiger.c
|
|
--- ../../branches/vendor/mhash/lib/tiger.c 2008-01-16 14:26:51.000000000 +0200
|
|
+++ ./lib/tiger.c 2008-01-16 15:08:55.000000000 +0200
|
|
@@ -62,26 +62,26 @@
|
|
#ifdef OPTIMIZE_FOR_ALPHA
|
|
/* This is the official definition of round */
|
|
#define round(a,b,c,x,mul) \
|
|
- c ^= x; \
|
|
- a -= t1[((c)>>(0*8))&0xFF] ^ t2[((c)>>(2*8))&0xFF] ^ \
|
|
+ (c) ^= (x); \
|
|
+ (a) -= t1[((c)>>(0*8))&0xFF] ^ t2[((c)>>(2*8))&0xFF] ^ \
|
|
t3[((c)>>(4*8))&0xFF] ^ t4[((c)>>(6*8))&0xFF] ; \
|
|
- b += t4[((c)>>(1*8))&0xFF] ^ t3[((c)>>(3*8))&0xFF] ^ \
|
|
+ (b) += t4[((c)>>(1*8))&0xFF] ^ t3[((c)>>(3*8))&0xFF] ^ \
|
|
t2[((c)>>(5*8))&0xFF] ^ t1[((c)>>(7*8))&0xFF] ; \
|
|
- b *= mul;
|
|
+ (b) *= (mul);
|
|
#else
|
|
/* This code works faster when compiled on 32-bit machines */
|
|
/* (but works slower on Alpha) */
|
|
#define round(a,b,c,x,mul) \
|
|
- c ^= x; \
|
|
- a -= t1[(mutils_word8)(c)] ^ \
|
|
+ (c) ^= (x); \
|
|
+ (a) -= t1[(mutils_word8)(c)] ^ \
|
|
t2[(mutils_word8)(((mutils_word32)(c))>>(2*8))] ^ \
|
|
t3[(mutils_word8)((c)>>(4*8))] ^ \
|
|
t4[(mutils_word8)(((mutils_word32)((c)>>(4*8)))>>(2*8))] ; \
|
|
- b += t4[(mutils_word8)(((mutils_word32)(c))>>(1*8))] ^ \
|
|
+ (b) += t4[(mutils_word8)(((mutils_word32)(c))>>(1*8))] ^ \
|
|
t3[(mutils_word8)(((mutils_word32)(c))>>(3*8))] ^ \
|
|
t2[(mutils_word8)(((mutils_word32)((c)>>(4*8)))>>(1*8))] ^ \
|
|
t1[(mutils_word8)(((mutils_word32)((c)>>(4*8)))>>(3*8))]; \
|
|
- b *= mul;
|
|
+ (b) *= (mul);
|
|
#endif
|
|
|
|
#define pass(a,b,c,mul) \
|
|
@@ -149,18 +149,18 @@
|
|
register mutils_word64 x0, x1, x2, x3, x4, x5, x6, x7; \
|
|
mutils_word8 pass_no; \
|
|
\
|
|
- a = state[0]; \
|
|
- b = state[1]; \
|
|
- c = state[2]; \
|
|
+ a = (state)[0]; \
|
|
+ b = (state)[1]; \
|
|
+ c = (state)[2]; \
|
|
\
|
|
- x0=str[0]; x1=str[1]; x2=str[2]; x3=str[3]; \
|
|
- x4=str[4]; x5=str[5]; x6=str[6]; x7=str[7]; \
|
|
+ x0=(str)[0]; x1=(str)[1]; x2=(str)[2]; x3=(str)[3]; \
|
|
+ x4=(str)[4]; x5=(str)[5]; x6=(str)[6]; x7=(str)[7]; \
|
|
\
|
|
compress; \
|
|
\
|
|
- state[0] = a; \
|
|
- state[1] = b; \
|
|
- state[2] = c; \
|
|
+ (state)[0] = a; \
|
|
+ (state)[1] = b; \
|
|
+ (state)[2] = c; \
|
|
}
|
|
|
|
#ifndef OPTIMIZE_FOR_ALPHA
|
|
@@ -173,20 +173,20 @@
|
|
#else /* OPTIMIZE_FOR_ALPHA */
|
|
/* The compress function is inlined: works better on Alpha. */
|
|
#define tiger_compress(str, state) \
|
|
- tiger_compress_macro(((mutils_word64*)str), ((mutils_word64*)state))
|
|
+ tiger_compress_macro(((mutils_word64*)(str)), ((mutils_word64*)(state)))
|
|
#endif /* OPTIMIZE_FOR_ALPHA */
|
|
|
|
#ifndef EXTRACT_UCHAR
|
|
#define EXTRACT_UCHAR(p) (*(mutils_word8 *)(p))
|
|
#endif
|
|
|
|
-#define STRING2INT64(s) ((((((((((((((mutils_word64)(EXTRACT_UCHAR(s+7) << 8) \
|
|
- | EXTRACT_UCHAR(s+6)) << 8) \
|
|
- | EXTRACT_UCHAR(s+5)) << 8) \
|
|
- | EXTRACT_UCHAR(s+4)) << 8) \
|
|
- | EXTRACT_UCHAR(s+3)) << 8) \
|
|
- | EXTRACT_UCHAR(s+2)) << 8) \
|
|
- | EXTRACT_UCHAR(s+1)) << 8) \
|
|
+#define STRING2INT64(s) ((((((((((((((mutils_word64)(EXTRACT_UCHAR((s)+7) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+6)) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+5)) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+4)) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+3)) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+2)) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+1)) << 8) \
|
|
| EXTRACT_UCHAR(s))
|
|
|
|
static void tiger_block(struct tiger_ctx *ctx, mutils_word8 * str)
|
|
@@ -362,35 +362,35 @@
|
|
|
|
#define sub64(s0, s1, p0, p1) \
|
|
temps0 = (p0); \
|
|
- tcarry = s0 < temps0; \
|
|
- s0 -= temps0; \
|
|
- s1 -= (p1) + tcarry;
|
|
+ tcarry = (s0) < temps0; \
|
|
+ (s0) -= temps0; \
|
|
+ (s1) -= (p1) + tcarry;
|
|
|
|
#define add64(s0, s1, p0, p1) \
|
|
temps0 = (p0); \
|
|
- s0 += temps0; \
|
|
- tcarry = s0 < temps0; \
|
|
- s1 += (p1) + tcarry;
|
|
+ (s0) += temps0; \
|
|
+ tcarry = (s0) < temps0; \
|
|
+ (s1) += (p1) + tcarry;
|
|
|
|
#define xor64(s0, s1, p0, p1) \
|
|
- s0 ^= (p0); \
|
|
- s1 ^= (p1);
|
|
+ (s0) ^= (p0); \
|
|
+ (s1) ^= (p1);
|
|
|
|
#define mul5(s0, s1) \
|
|
- tempt0 = s0<<2; \
|
|
- tempt1 = (s1<<2)|(s0>>30); \
|
|
+ tempt0 = (s0)<<2; \
|
|
+ tempt1 = ((s1)<<2)|((s0)>>30); \
|
|
add64(s0, s1, tempt0, tempt1);
|
|
|
|
#define mul7(s0, s1) \
|
|
- tempt0 = s0<<3; \
|
|
- tempt1 = (s1<<3)|(s0>>29); \
|
|
+ tempt0 = (s0)<<3; \
|
|
+ tempt1 = ((s1)<<3)|((s0)>>29); \
|
|
sub64(tempt0, tempt1, s0, s1); \
|
|
- s0 = tempt0; \
|
|
- s1 = tempt1;
|
|
+ (s0) = tempt0; \
|
|
+ (s1) = tempt1;
|
|
|
|
#define mul9(s0, s1) \
|
|
- tempt0 = s0<<3; \
|
|
- tempt1 = (s1<<3)|(s0>>29); \
|
|
+ tempt0 = (s0)<<3; \
|
|
+ tempt1 = ((s1)<<3)|((s0)>>29); \
|
|
add64(s0, s1, tempt0, tempt1);
|
|
|
|
#define save_abc \
|
|
@@ -497,33 +497,33 @@
|
|
mutils_word32 i; \
|
|
int pass_no; \
|
|
\
|
|
- a0 = state[0]; \
|
|
- a1 = state[1]; \
|
|
- b0 = state[2]; \
|
|
- b1 = state[3]; \
|
|
- c0 = state[4]; \
|
|
- c1 = state[5]; \
|
|
+ a0 = (state)[0]; \
|
|
+ a1 = (state)[1]; \
|
|
+ b0 = (state)[2]; \
|
|
+ b1 = (state)[3]; \
|
|
+ c0 = (state)[4]; \
|
|
+ c1 = (state)[5]; \
|
|
\
|
|
- x00=str[0*2]; x01=str[0*2+1]; x10=str[1*2]; x11=str[1*2+1]; \
|
|
- x20=str[2*2]; x21=str[2*2+1]; x30=str[3*2]; x31=str[3*2+1]; \
|
|
- x40=str[4*2]; x41=str[4*2+1]; x50=str[5*2]; x51=str[5*2+1]; \
|
|
- x60=str[6*2]; x61=str[6*2+1]; x70=str[7*2]; x71=str[7*2+1]; \
|
|
+ x00=(str)[0*2]; x01=(str)[0*2+1]; x10=(str)[1*2]; x11=(str)[1*2+1]; \
|
|
+ x20=(str)[2*2]; x21=(str)[2*2+1]; x30=(str)[3*2]; x31=(str)[3*2+1]; \
|
|
+ x40=(str)[4*2]; x41=(str)[4*2+1]; x50=(str)[5*2]; x51=(str)[5*2+1]; \
|
|
+ x60=(str)[6*2]; x61=(str)[6*2+1]; x70=(str)[7*2]; x71=(str)[7*2+1]; \
|
|
\
|
|
compress; \
|
|
\
|
|
- state[0] = a0; \
|
|
- state[1] = a1; \
|
|
- state[2] = b0; \
|
|
- state[3] = b1; \
|
|
- state[4] = c0; \
|
|
- state[5] = c1; \
|
|
+ (state)[0] = a0; \
|
|
+ (state)[1] = a1; \
|
|
+ (state)[2] = b0; \
|
|
+ (state)[3] = b1; \
|
|
+ (state)[4] = c0; \
|
|
+ (state)[5] = c1; \
|
|
}
|
|
|
|
#define UNROLL_COMPRESS
|
|
#ifdef UNROLL_COMPRESS
|
|
/* The compress function is inlined */
|
|
#define tiger_compress(str, state) \
|
|
- tiger_compress_macro(((mutils_word32*)str), ((mutils_word32*)state))
|
|
+ tiger_compress_macro(((mutils_word32*)(str)), ((mutils_word32*)(state)))
|
|
#else
|
|
/* The compress function is a function */
|
|
tiger_compress(__const mutils_word32 *str, mutils_word32 state[6])
|
|
@@ -537,9 +537,9 @@
|
|
#define EXTRACT_UCHAR(p) (*(mutils_word8 *)(p))
|
|
#endif
|
|
|
|
-#define STRING2INT(s) ((((((EXTRACT_UCHAR(s+3) << 8) \
|
|
- | EXTRACT_UCHAR(s+2)) << 8) \
|
|
- | EXTRACT_UCHAR(s+1)) << 8) \
|
|
+#define STRING2INT(s) ((((((EXTRACT_UCHAR((s)+3) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+2)) << 8) \
|
|
+ | EXTRACT_UCHAR((s)+1)) << 8) \
|
|
| EXTRACT_UCHAR(s))
|
|
|
|
static void tiger_block(struct tiger_ctx *ctx, mutils_word8 * block)
|