diff options
| author | Sovak <sovak007@gmail.com> | 2014-10-19 17:23:48 +0200 |
|---|---|---|
| committer | Sovak <sovak007@gmail.com> | 2014-10-19 23:19:49 +0200 |
| commit | 51095ad39b253b83632e8de954bf7a5e30aa9944 (patch) | |
| tree | 684f6c865e4538f9b42f593de90f51cc255e1690 /src/server/shared | |
| parent | 53725517a029ee3c40d851cab687e1726b09fde0 (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.h | 16 |
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; } |
