Avoid a four byte overread in gcm_ghash_4bit() on amd64.
authorjsing <jsing@openbsd.org>
Wed, 24 Jan 2024 13:39:44 +0000 (13:39 +0000)
committerjsing <jsing@openbsd.org>
Wed, 24 Jan 2024 13:39:44 +0000 (13:39 +0000)
commit48b5156258b8fd8ea7b97d5221152e4011894969
tree65989899b9ae64d9fad5d19a7db0ff02570fbb20
parent13f2f00f1ba3d96c9c2378993fdf49a200a8c510
Avoid a four byte overread in gcm_ghash_4bit() on amd64.

The assembly code for gcm_ghash_4bit() reads one too many times from Xi,
resulting in a four byte overread. Prevent this by not loading the next
value in the final iteration of the loop. If another full iteration is
required the next Xi value will be loaded at the top of the outer_loop.

Many thanks to Douglas Gliner <Douglas.Gliner at sony dot com> for finding
and reporting this issue, along with a detailed reproducer.

Same diff from deraadt@

ok tb@
lib/libcrypto/modes/asm/ghash-x86_64.pl