Do not construct out-of-bound pointers in SHA512/SHA1/RIPEMD160 code

pull/764/head
Pieter Wuille 6 years ago
parent 94daebf327
commit c01c065b9d

@ -256,7 +256,7 @@ CRIPEMD160& CRIPEMD160::Write(const unsigned char* data, size_t len)
ripemd160::Transform(s, buf); ripemd160::Transform(s, buf);
bufsize = 0; bufsize = 0;
} }
while (end >= data + 64) { while (end - data >= 64) {
// Process full chunks directly from the source. // Process full chunks directly from the source.
ripemd160::Transform(s, data); ripemd160::Transform(s, data);
bytes += 64; bytes += 64;

@ -163,7 +163,7 @@ CSHA1& CSHA1::Write(const unsigned char* data, size_t len)
sha1::Transform(s, buf); sha1::Transform(s, buf);
bufsize = 0; bufsize = 0;
} }
while (end >= data + 64) { while (end - data >= 64) {
// Process full chunks directly from the source. // Process full chunks directly from the source.
sha1::Transform(s, data); sha1::Transform(s, data);
bytes += 64; bytes += 64;

@ -168,7 +168,7 @@ CSHA512& CSHA512::Write(const unsigned char* data, size_t len)
sha512::Transform(s, buf); sha512::Transform(s, buf);
bufsize = 0; bufsize = 0;
} }
while (end >= data + 128) { while (end - data >= 128) {
// Process full chunks directly from the source. // Process full chunks directly from the source.
sha512::Transform(s, data); sha512::Transform(s, data);
data += 128; data += 128;

Loading…
Cancel
Save