* Wang, Shane | 2010-02-21 13:32:49 [+0800]:

>--- a/crypto/vmac.c    Thu Feb 11 00:45:57 2010 -0800
>+++ b/crypto/vmac.c    Sun Feb 21 02:23:01 2010 -0800
>@@ -42,6 +42,8 @@ const u64 m63   = UINT64_C(0x7ffffffffff
> const u64 m63   = UINT64_C(0x7fffffffffffffff);  /* 63-bit mask       */
> const u64 m64   = UINT64_C(0xffffffffffffffff);  /* 64-bit mask       */
> const u64 mpoly = UINT64_C(0x1fffffff1fffffff);  /* Poly key mask     */
>+
>+#define pe64_to_cpup le64_to_cpup             /* Prefer little endian */

Does it mean that I can switch it to be64_to_cpup ?

>@@ -575,6 +572,10 @@ static int vmac_final(struct shash_desc 
>       u8 nonce[16] = {};
> 
>       mac = vmac(NULL, 0, nonce, NULL, ctx);
>+
>+      /* set output invariant considering endianness */
>+      mac = le64_to_cpup(&mac);
So this is the fix. It would look better if you would include this
swap into vmac() itself. I'm not sure but this is probably causing a
dereference which could be avoided.
sparse should catch conversion bugs like this one if you were using
types likes __be64.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to