diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2013-06-08 22:44:53 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2013-06-08 22:44:57 +0200 |
commit | 877842e413daf830114939dc6915d225c40197c3 (patch) | |
tree | 0081e5c574ae77fffe0f38a2cb1383eee8c48e64 /src/net/tmwa | |
parent | f9cd8a5d6b4460ffcb945979d1e8cd8ebadc9b8d (diff) | |
download | mana-877842e413daf830114939dc6915d225c40197c3.tar.gz mana-877842e413daf830114939dc6915d225c40197c3.tar.bz2 mana-877842e413daf830114939dc6915d225c40197c3.tar.xz mana-877842e413daf830114939dc6915d225c40197c3.zip |
Fixed MessageIn::getUnreadLength
It should not return large numbers after reading past the end of a
message. This can cause infinite loops in several places in the client
when a message happened to be shorter than expected.
Diffstat (limited to 'src/net/tmwa')
-rw-r--r-- | src/net/tmwa/messagein.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/net/tmwa/messagein.h b/src/net/tmwa/messagein.h index 48121187..2f66ca28 100644 --- a/src/net/tmwa/messagein.h +++ b/src/net/tmwa/messagein.h @@ -50,7 +50,10 @@ class MessageIn /** * Returns the length of unread data. */ - unsigned int getUnreadLength() const { return mLength - mPos; } + unsigned int getUnreadLength() const + { + return (mPos < mLength) ? mLength - mPos : 0; + } /** * Reads an unsigned 8-bit integer from the message. |