aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
authorSovak <sovak007@gmail.com>2014-10-19 17:23:48 +0200
committerSovak <sovak007@gmail.com>2014-10-19 23:19:49 +0200
commit51095ad39b253b83632e8de954bf7a5e30aa9944 (patch)
tree684f6c865e4538f9b42f593de90f51cc255e1690 /src/server/shared
parent53725517a029ee3c40d851cab687e1726b09fde0 (diff)
Core/NetworkIO: *Fixed basic auth packets
Fixed basic character packets Nulled all opcodes Thanks to @Shauren for pointing some derps out Signed-off-by: Sovak <sovak007@gmail.com>
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/Packets/ByteBuffer.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index d65b6c58a51..de871c5e6df 100644
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -133,6 +133,15 @@ class ByteBuffer
_curbitval = 0;
}
+ void ResetBitPos()
+ {
+ if (_bitpos > 7)
+ return;
+
+ _bitpos = 8;
+ _curbitval = 0;
+ }
+
bool WriteBit(uint32 bit)
{
--_bitpos;
@@ -154,8 +163,8 @@ class ByteBuffer
++_bitpos;
if (_bitpos > 7)
{
- _bitpos = 0;
_curbitval = read<uint8>();
+ _bitpos = 0;
}
return ((_curbitval >> (7-_bitpos)) & 1) != 0;
@@ -442,11 +451,14 @@ class ByteBuffer
{
if (_rpos + skip > size())
throw ByteBufferPositionException(false, _rpos, skip, size());
+
+ ResetBitPos();
_rpos += skip;
}
template <typename T> T read()
{
+ ResetBitPos();
T r = read<T>(_rpos);
_rpos += sizeof(T);
return r;
@@ -465,6 +477,8 @@ class ByteBuffer
{
if (_rpos + len > size())
throw ByteBufferPositionException(false, _rpos, len, size());
+
+ ResetBitPos();
std::memcpy(dest, &_storage[_rpos], len);
_rpos += len;
}