From 1c00cf20fb58492489f8137161c552fe4d70d2cb Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 6 Sep 2014 00:51:01 +0300 Subject: eathena: read whole packet in processAddQuestsObjectives. --- src/net/eathena/questhandler.cpp | 1 + src/net/messagein.cpp | 11 +++++++++++ src/net/messagein.h | 2 ++ 3 files changed, 14 insertions(+) diff --git a/src/net/eathena/questhandler.cpp b/src/net/eathena/questhandler.cpp index 3d6cde34f..d7e8bf6e8 100644 --- a/src/net/eathena/questhandler.cpp +++ b/src/net/eathena/questhandler.cpp @@ -141,6 +141,7 @@ void QuestHandler::processAddQuestsObjectives(Net::MessageIn &msg) msg.readString(24, "monster name"); } } + msg.skipToEnd("unused"); } void QuestHandler::processUpdateQuestsObjectives(Net::MessageIn &msg) diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index 0c7f9cb7e..212ce9d55 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -200,6 +200,17 @@ void MessageIn::skip(const unsigned int length, const char *const str) PacketCounters::incInBytes(length); } +void MessageIn::skipToEnd(const char *const str) +{ + const int diff = static_cast(mLength - mPos); + if (diff) + { + DEBUGLOG2("skip: " + toString(diff), mPos, str); + mPos = mLength; + PacketCounters::incInBytes(diff); + } +} + std::string MessageIn::readString(int length, const char *const dstr) { // Get string length diff --git a/src/net/messagein.h b/src/net/messagein.h index cc32328cb..ba857ce64 100644 --- a/src/net/messagein.h +++ b/src/net/messagein.h @@ -97,6 +97,8 @@ class MessageIn notfinal virtual void skip(const unsigned int length, const char *const str = nullptr); + void skipToEnd(const char *const str = nullptr); + /** * Reads a string. If a length is not given (-1), it is assumed * that the length of the string is stored in a short at the -- cgit v1.2.3-60-g2f50