Hello,
valgrind is reporting an invalid read in RC4 (I am using a purified lib
on MacOS).
I am calling RC4 on a buffer that is not a multiple of 4 bytes, but it
seems like the code is always reading data by chunk of 4 bytes (at least
on MacOS).
In particular, the code in rc4_enc.c, around line 235, seems to be wrong:
231 if (len)
232 {
233 RC4_CHUNK mask=(RC4_CHUNK)-1, ochunk;
234
235 ichunk = *(RC4_CHUNK *)indata;
236 ochunk = *(RC4_CHUNK *)outdata;
237 otp = 0;
238 i = 0;
If there are only 2 bytes left in the buffer, the *(RC4_CHUNK *)indata will
still access 4 bytes (RC4_CHUNK is a long on MacOS), causing the following
error in valgrind:
==20:08:55:44.231 45425== ERROR
==20:08:55:44.231 45425==
==20:08:55:44.231 45425== Invalid read of size 4
==20:08:55:44.231 45425== at 0x31AF82: RC4+1794 (in
/usr/local/openssl/lib/libcrypto.0.9.8.dylib)
==20:08:55:44.231 45425== by 0x7F0EFBE2: ???
==20:08:55:44.231 45425== Address 0x1abdc08 is 113,880 bytes inside a block of
size 113,882 alloc'd
==20:08:55:44.231 45425== at 0x220DCA: malloc+211 (in vgpreload_memcheck.so)
Is this expected ?
Thanks,
Julien
--
Julien Lerouge
PGP Key Id: 0xB1964A62
PGP Fingerprint: 392D 4BAD DB8B CE7F 4E5F FA3C 62DB 4AA7 B196 4A62
PGP Public Key from: keyserver.pgp.com
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]