From 51095ad39b253b83632e8de954bf7a5e30aa9944 Mon Sep 17 00:00:00 2001 From: Sovak Date: Sun, 19 Oct 2014 17:23:48 +0200 Subject: 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 --- src/server/shared/Packets/ByteBuffer.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/server/shared') 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(); + _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 T read() { + ResetBitPos(); T r = read(_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; } -- cgit v1.2.3