Nikos Mavrogiannopoulos <[email protected]> writes:
> The attached patches address the undefined behavior dependence
> for blowfish, twofish and des, and enable gitlab builds with
> asan and ubsan.
Thanks. I'm applying the last two patches (the des error was a little
embarrassing...). For the first patch, I'd prefer to solve the problem
slightly differently, see comments below.
> @@ -359,8 +359,8 @@ blowfish_decrypt (const struct blowfish_ctx *ctx,
> {
> uint32_t d1, d2;
>
> - d1 = src[0] << 24 | src[1] << 16 | src[2] << 8 | src[3];
> - d2 = src[4] << 24 | src[5] << 16 | src[6] << 8 | src[7];
> + d1 = (((uint32_t)src[0]) << 24) | src[1] << 16 | src[2] << 8 | src[3];
> + d2 = (((uint32_t)src[4]) << 24) | src[5] << 16 | src[6] << 8 | src[7];
Use the READ_UINT32 macro instead, which includes the needed cast. And
the same must be done for the blowfish_encrypt function just above, too.
> --- a/twofish.c
> +++ b/twofish.c
> @@ -190,14 +190,14 @@ compute_s(uint32_t m1, uint32_t m2)
> uint32_t s = 0;
> int i;
> for (i = 0; i < 4; i++)
> - s |= (( gf_multiply(0x4D, m1, rs_matrix[i][0])
> + s |= ((uint32_t)(( gf_multiply(0x4D, m1, rs_matrix[i][0])
I think it's simpler to change the return type of gf_multiply to
uint32_t, and delete similar casts in the other places where it is used.
I'll try to take care of it, remind me if it isn't fixed within a few
days.
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.
_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs