Avoids undefined behavior, since shifting an 8-bit value left by 24
bits overflows the range of signed int. Reported by Guido Vranken.
+2020-10-29 Niels Möller <nisse@lysator.liu.se>
+
+ * blowfish.c (blowfish_set_key): Add casts to uint32_t. Avoids
+ undefined behavior, since shifting an 8-bit value left by 24 bits
+ overflows the range of signed int. Reported by Guido Vranken.
+
2020-10-28 Niels Möller <nisse@lysator.liu.se>
* gmp-glue.h (cnd_add_n, cnd_sub_n, cnd_swap): Deleted, use
for (i = j = 0; i < _BLOWFISH_ROUNDS + 2; i++)
{
- data = (key[j] << 24) | (key[(j+1) % length] << 16)
- | (key[(j+2) % length] << 8) | key[(j+3) % length];
+ data = ((uint32_t) key[j] << 24)
+ | ((uint32_t) key[(j+1) % length] << 16)
+ | ((uint32_t) key[(j+2) % length] << 8)
+ | (uint32_t) key[(j+3) % length];
ctx->p[i] ^= data;
j = (j + 4) % length;
}