In the case where len is not a multiple of sizeof(RC4_CHUNK) the RC4 code
authorjsing <jsing@openbsd.org>
Wed, 21 Oct 2015 16:36:50 +0000 (16:36 +0000)
committerjsing <jsing@openbsd.org>
Wed, 21 Oct 2015 16:36:50 +0000 (16:36 +0000)
commit802266603cce119af8f1945c8a6a944e47363637
treeadacacf4ffe52f7e18f7548c5a4e9b09575e40db
parente4bed001e3846d1f10dd3dbda8ec679984dc7046
In the case where len is not a multiple of sizeof(RC4_CHUNK) the RC4 code
will end up doing a read and write of up to 7 bytes beyond the specified
length. This is effectively a non-issue since we read and write back the
same data and due to alignment it is within a page boundary.

Regardless, avoid this by removing the "special" handling for the remaining
length and allow the standard (non-chunk) code to process the remaining
bytes, which does not result in overrun.

Reported by Pascal Cuoq <cuoq at trust-in-soft.com> - thanks!

ok beck@ miod@
lib/libcrypto/rc4/rc4_enc.c
lib/libssl/src/crypto/rc4/rc4_enc.c