cmCryptoHash: Increase alignment of HashFile buffer

The SHA512_Update implementation accesses input data via 64-bit
integers.  This requires alignment of the input buffer on some
architectures.  Align our stack-allocated buffer for file content to
satisfy this requirement.
This commit is contained in:
Brad King 2013-06-10 16:52:16 -04:00
parent 5dd8c01429
commit 75994d953e
1 changed files with 3 additions and 3 deletions

View File

@ -54,8 +54,8 @@ std::string cmCryptoHash::HashFile(const char* file)
this->Initialize(); this->Initialize();
// Should be efficient enough on most system: // Should be efficient enough on most system:
const int bufferSize = 4096; cm_sha2_uint64_t buffer[512];
char buffer[bufferSize]; char* buffer_c = reinterpret_cast<char*>(buffer);
unsigned char const* buffer_uc = unsigned char const* buffer_uc =
reinterpret_cast<unsigned char const*>(buffer); reinterpret_cast<unsigned char const*>(buffer);
// This copy loop is very sensitive on certain platforms with // This copy loop is very sensitive on certain platforms with
@ -65,7 +65,7 @@ std::string cmCryptoHash::HashFile(const char* file)
// error occurred. Therefore, the loop should be safe everywhere. // error occurred. Therefore, the loop should be safe everywhere.
while(fin) while(fin)
{ {
fin.read(buffer, bufferSize); fin.read(buffer_c, sizeof(buffer));
if(int gcount = static_cast<int>(fin.gcount())) if(int gcount = static_cast<int>(fin.gcount()))
{ {
this->Append(buffer_uc, gcount); this->Append(buffer_uc, gcount);