]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
random: do not sign extend bytes for rotation when mixing
authorJason A. Donenfeld <Jason@zx2c4.com>
Fri, 24 Dec 2021 18:17:58 +0000 (19:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Jun 2022 09:46:30 +0000 (11:46 +0200)
commiteaa94d939f2f5799b1ef1fe565164f55c10a483a
tree2f88b958b42ddf19074a8e288b0cfa61078750f6
parent1f89b3175be82fecf9621fe102320660c98e40e3
random: do not sign extend bytes for rotation when mixing

commit 0d9488ffbf2faddebc6bac055bfa6c93b94056a3 upstream.

By using `char` instead of `unsigned char`, certain platforms will sign
extend the byte when `w = rol32(*bytes++, input_rotate)` is called,
meaning that bit 7 is overrepresented when mixing. This isn't a real
problem (unless the mixer itself is already broken) since it's still
invertible, but it's not quite correct either. Fix this by using an
explicit unsigned type.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/random.c