aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Warden/Warden.cpp
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-11-15 14:13:58 +0100
committerSpp <spp@jorge.gr>2012-11-15 14:13:58 +0100
commitd10ba397b61c35a12631dc9a6627b15e67b13f0a (patch)
tree975b40a9cf8fe6ee5cfd767f1661699ba4ca8844 /src/server/game/Warden/Warden.cpp
parent58c60c70cc79c8b3ffcbbf9a8bf37a77028e9a73 (diff)
Core/Warden: Remove warning
Diffstat (limited to 'src/server/game/Warden/Warden.cpp')
-rw-r--r--src/server/game/Warden/Warden.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/server/game/Warden/Warden.cpp b/src/server/game/Warden/Warden.cpp
index ce64dbd1a94..06f8454fda7 100644
--- a/src/server/game/Warden/Warden.cpp
+++ b/src/server/game/Warden/Warden.cpp
@@ -151,13 +151,28 @@ bool Warden::IsValidCheckSum(uint32 checksum, const uint8* data, const uint16 le
}
}
+struct keyData {
+ union
+ {
+ struct
+ {
+ uint8 bytes[20];
+ } bytes;
+
+ struct
+ {
+ uint32 ints[5];
+ } ints;
+ };
+};
+
uint32 Warden::BuildChecksum(const uint8* data, uint32 length)
{
- uint8 hash[20];
- SHA1(data, length, hash);
+ keyData hash;
+ SHA1(data, length, hash.bytes.bytes);
uint32 checkSum = 0;
for (uint8 i = 0; i < 5; ++i)
- checkSum = checkSum ^ *(uint32*)(&hash[0] + i * 4);
+ checkSum = checkSum ^ hash.ints.ints[i];
return checkSum;
}