diff -u unshield-0.5.orig/lib/md5/global.h unshield-0.5/lib/md5/global.h --- unshield-0.5.orig/lib/md5/global.h 2006-09-26 18:19:28.000000000 -0400 +++ unshield-0.5/lib/md5/global.h 2006-09-26 18:17:04.000000000 -0400 @@ -17,7 +17,7 @@ typedef unsigned short int UINT2; /* UINT4 defines a four byte word */ -typedef unsigned long int UINT4; +typedef unsigned int UINT4; /* PROTO_LIST is defined depending on how PROTOTYPES is defined above. If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it diff -u unshield-0.5.orig/lib/md5/md5c.c unshield-0.5/lib/md5/md5c.c --- unshield-0.5.orig/lib/md5/md5c.c 2006-09-26 18:19:28.000000000 -0400 +++ unshield-0.5/lib/md5/md5c.c 2006-09-26 18:18:11.000000000 -0400 @@ -68,7 +68,7 @@ /* ROTATE_LEFT rotates x left n bits. */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) +#define ROTATE_LEFT(x, n) ((((x) << (n)) & 0xffffffffU) | ((x) >> (32-(n)))) /* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. Rotation is separate from addition to prevent recomputation.