Yes, a segfault occurred at the indicated line. This was using the x86-64 version of gcc.
-----Original Message----- From: Wei Dai [mailto:[EMAIL PROTECTED] Sent: Monday, March 24, 2003 8:08 PM To: [EMAIL PROTECTED] Subject: Re: Serpent::UncheckedSetKey Thanks, you're right this might be a problem on platforms with 64-bit pointers. (BTW, did you confirm what would actually happen in this case?) I checked in a fix to CVS. On Mon, Mar 24, 2003 at 07:28:30PM -0600, [EMAIL PROTECTED] wrote: > I am definitely not familiar with the Crypto++ library but am trying > to use it as a compiler benchmark. > > In the 5.1 codebase, I see the function below (first few lines). Since > the index i is word32 which is unsigned, I would think that > expressions like i-8 and i-5 and i-3 would wrap around to large > positive numbers which is not what is wanted here. > > Are there any special procedures to follow for porting > to a 64-bit target? > > -- Tom Deneau > > > > void Serpent::Base::UncheckedSetKey(CipherDir direction, const byte > *userKey, unsigned int keylen) { > AssertValidKeyLength(keylen); > > word32 *k = m_key; > GetUserKey(LITTLE_ENDIAN_ORDER, k, 8, userKey, keylen); > > word32 i,a,b,c,d,e; > > if (keylen < 32) > k[keylen/4] |= word32(1) << ((keylen%4)*8); > > k += 8; > word32 t = k[-1]; > for (i = 0; i < 132; ++i) > k[i] = t = rotlFixed(k[i-8] ^ k[i-5] ^ k[i-3] ^ t ^ 0x9e3779b9 ^ i, > 11); > k -= 20;
