diff options
author | Brad King <brad.king@kitware.com> | 2013-06-10 20:52:16 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-06-13 12:40:10 (GMT) |
commit | 75994d953e261b388aa31e4d8ecd8af9fe53142b (patch) | |
tree | 4364cfc72ebc4b32fba7d39b732202a243cb7982 /Source/cmCryptoHash.cxx | |
parent | 5dd8c01429da90a7417b72f17e784cc98f70f57c (diff) | |
download | CMake-75994d953e261b388aa31e4d8ecd8af9fe53142b.zip CMake-75994d953e261b388aa31e4d8ecd8af9fe53142b.tar.gz CMake-75994d953e261b388aa31e4d8ecd8af9fe53142b.tar.bz2 |
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.
Diffstat (limited to 'Source/cmCryptoHash.cxx')
-rw-r--r-- | Source/cmCryptoHash.cxx | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Source/cmCryptoHash.cxx b/Source/cmCryptoHash.cxx index a1505bd..a4f6ac4 100644 --- a/Source/cmCryptoHash.cxx +++ b/Source/cmCryptoHash.cxx @@ -54,8 +54,8 @@ std::string cmCryptoHash::HashFile(const char* file) this->Initialize(); // Should be efficient enough on most system: - const int bufferSize = 4096; - char buffer[bufferSize]; + cm_sha2_uint64_t buffer[512]; + char* buffer_c = reinterpret_cast<char*>(buffer); unsigned char const* buffer_uc = reinterpret_cast<unsigned char const*>(buffer); // 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. while(fin) { - fin.read(buffer, bufferSize); + fin.read(buffer_c, sizeof(buffer)); if(int gcount = static_cast<int>(fin.gcount())) { this->Append(buffer_uc, gcount); |