From 81aeb28436d847ed4e6bcda8c746a3e5631c7feb Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 19 Dec 2014 11:39:38 +0100 Subject: [PATCH] src/primitives/block.cpp: endian compatibility in GetHash --- src/primitives/block.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/primitives/block.cpp b/src/primitives/block.cpp index 3b4a36039..8338762a3 100644 --- a/src/primitives/block.cpp +++ b/src/primitives/block.cpp @@ -8,10 +8,22 @@ #include "hash.h" #include "tinyformat.h" #include "utilstrencodings.h" +#include "crypto/common.h" uint256 CBlockHeader::GetHash() const { +#if defined(WORDS_BIGENDIAN) + uint8_t data[80]; + WriteLE32(&data[0], nVersion); + memcpy(&data[4], hashPrevBlock.begin(), hashPrevBlock.size()); + memcpy(&data[36], hashMerkleRoot.begin(), hashMerkleRoot.size()); + WriteLE32(&data[68], nTime); + WriteLE32(&data[72], nBits); + WriteLE32(&data[76], nNonce); + return Hash(data, data + 80); +#else // Can take shortcut for little endian return Hash(BEGIN(nVersion), END(nNonce)); +#endif } uint256 CBlock::BuildMerkleTree(bool* fMutated) const