diff options
author | Fedja Beader <fedja@protonmail.ch> | 2025-04-03 22:44:17 +0000 |
---|---|---|
committer | Fedja Beader <fedja@protonmail.ch> | 2025-04-03 22:44:17 +0000 |
commit | 65f505ea28f29738e4d874f55d96d6e2579ba757 (patch) | |
tree | d216640a8cef9ae27afe593b037724834eacc4a1 | |
parent | bb01aea375047f23b5ddc4f481b611dff39003b2 (diff) | |
download | manaplus-65f505ea28f29738e4d874f55d96d6e2579ba757.tar.gz manaplus-65f505ea28f29738e4d874f55d96d6e2579ba757.tar.bz2 manaplus-65f505ea28f29738e4d874f55d96d6e2579ba757.tar.xz manaplus-65f505ea28f29738e4d874f55d96d6e2579ba757.zip |
Fix wrong read of clif_GM_kickack packet
2024-08/01/#Debug.log:[14:25:43] Wrong actual or planned inbound packet
size!. Packet id: 205(0xcd), Planned size: 3, Actual size: 6
2 bytes packet id + 1 byte flag = 3
2 bytes packet id + 4 byte flag (wrong) = 6
Squashed with:
* Separate processKickAck handler for eathena
* Move ea's adminrecv and its sole handler processKickAck into TMWA
namespace
* Revert "Fix wrong read of clif_GM_kickack packet"
This would break TMWA packet processing, as @thorbjorn pointed out.
This reverts commit efe43bac4de90b3e427d985b77cb3dd3206bcf9d.
****
mana/plus!148
-rw-r--r-- | src/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/net/eathena/adminrecv.cpp | 12 | ||||
-rw-r--r-- | src/net/eathena/adminrecv.h | 1 | ||||
-rw-r--r-- | src/net/eathena/network.cpp | 1 | ||||
-rw-r--r-- | src/net/eathena/packetsin.inc | 2 | ||||
-rw-r--r-- | src/net/tmwa/adminrecv.cpp (renamed from src/net/ea/adminrecv.cpp) | 8 | ||||
-rw-r--r-- | src/net/tmwa/adminrecv.h (renamed from src/net/ea/adminrecv.h) | 10 | ||||
-rw-r--r-- | src/net/tmwa/network.cpp | 2 | ||||
-rw-r--r-- | src/net/tmwa/packetsin.inc | 2 |
10 files changed, 29 insertions, 17 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9f5a22e0f..6195f9260 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2010,8 +2010,6 @@ SET(DYE_CMD_SRCS ) SET(SRCS_EVOL - net/ea/adminrecv.cpp - net/ea/adminrecv.h net/ea/adminhandler.cpp net/ea/adminhandler.h net/ea/beingrecv.cpp @@ -2082,6 +2080,8 @@ SET(SRCS_TMWA gui/windows/shopselldialog.h net/tmwa/adminhandler.cpp net/tmwa/adminhandler.h + net/tmwa/adminrecv.cpp + net/tmwa/adminrecv.h net/tmwa/achievementhandler.cpp net/tmwa/achievementhandler.h net/tmwa/attendancehandler.cpp diff --git a/src/Makefile.am b/src/Makefile.am index f11d310e4..394a7bd45 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1639,8 +1639,6 @@ SRC = ${BASE_SRC} \ net/protocoloutdefine.h \ net/protocoloutinclude.h \ net/protocoloutupdate.h \ - net/ea/adminrecv.cpp \ - net/ea/adminrecv.h \ net/ea/adminhandler.cpp \ net/ea/adminhandler.h \ net/ea/beingrecv.cpp \ @@ -1728,6 +1726,8 @@ SRC += \ gui/windows/shopselldialog.h \ net/tmwa/adminhandler.cpp \ net/tmwa/adminhandler.h \ + net/tmwa/adminrecv.cpp \ + net/tmwa/adminrecv.h \ net/tmwa/achievementhandler.cpp \ net/tmwa/achievementhandler.h \ net/tmwa/attendancehandler.cpp \ diff --git a/src/net/eathena/adminrecv.cpp b/src/net/eathena/adminrecv.cpp index 19895924d..fc9cb606b 100644 --- a/src/net/eathena/adminrecv.cpp +++ b/src/net/eathena/adminrecv.cpp @@ -19,8 +19,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + #include "net/eathena/adminrecv.h" +#include "enums/resources/notifytypes.h" +#include "notifymanager.h" + #include "logger.h" #include "net/messagein.h" @@ -79,4 +83,12 @@ void AdminRecv::processAccountStats(Net::MessageIn &msg) msg.readInt16("zero"); } +void AdminRecv::processKickAck(Net::MessageIn &msg) +{ + if (msg.readInt8("flag") == 0) + NotifyManager::notify(NotifyTypes::KICK_FAIL); + else + NotifyManager::notify(NotifyTypes::KICK_SUCCEED); +} + } // namespace EAthena diff --git a/src/net/eathena/adminrecv.h b/src/net/eathena/adminrecv.h index 1dc2b13b5..6a660b18a 100644 --- a/src/net/eathena/adminrecv.h +++ b/src/net/eathena/adminrecv.h @@ -32,6 +32,7 @@ namespace EAthena namespace AdminRecv { void processAdminGetLoginAck(Net::MessageIn &msg); + void processKickAck(Net::MessageIn &msg); void processSetTileType(Net::MessageIn &msg); void processAccountStats(Net::MessageIn &msg); } // namespace AdminRecv diff --git a/src/net/eathena/network.cpp b/src/net/eathena/network.cpp index 94290cb3f..f52402c9d 100644 --- a/src/net/eathena/network.cpp +++ b/src/net/eathena/network.cpp @@ -25,7 +25,6 @@ #include "net/packetinfo.h" -#include "net/ea/adminrecv.h" #include "net/ea/beingrecv.h" #include "net/ea/buysellrecv.h" #include "net/ea/charserverrecv.h" diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index 2a8e26264..b93e9d09d 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -94,7 +94,7 @@ packet(SMSG_MAP_NOT_FOUND, 0x0840, -1, &GeneralRecv::processMap // map server, unknown versions packet(SMSG_ADMIN_GET_LOGIN_ACK, 0x01e0, 30, &AdminRecv::processAdminGetLoginAck, 0); -packet(SMSG_ADMIN_KICK_ACK, 0x00cd, 3, &Ea::AdminRecv::processKickAck, 0); +packet(SMSG_ADMIN_KICK_ACK, 0x00cd, 3, &AdminRecv::processKickAck, 0); packet(SMSG_ADMIN_SET_TILE_TYPE, 0x0192, 24, &AdminRecv::processSetTileType, 0); packet(SMSG_BATTLE_BEGINS, 0x08df, 50, &BattleGroundRecv::processBattleBegins, 0); packet(SMSG_BATTLE_JOINED, 0x08d9, 30, &BattleGroundRecv::processBattleJoined, 0); diff --git a/src/net/ea/adminrecv.cpp b/src/net/tmwa/adminrecv.cpp index efc55762f..58ee1b175 100644 --- a/src/net/ea/adminrecv.cpp +++ b/src/net/tmwa/adminrecv.cpp @@ -21,7 +21,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "net/ea/adminrecv.h" +#include "net/tmwa/adminrecv.h" #include "notifymanager.h" @@ -31,15 +31,15 @@ #include "debug.h" -namespace Ea +namespace TmwAthena { void AdminRecv::processKickAck(Net::MessageIn &msg) { - if (msg.readInt32("flag") == 0) + if (msg.readInt32("account id") == 0) NotifyManager::notify(NotifyTypes::KICK_FAIL); else NotifyManager::notify(NotifyTypes::KICK_SUCCEED); } -} // namespace Ea +} // namespace TmwAthena diff --git a/src/net/ea/adminrecv.h b/src/net/tmwa/adminrecv.h index 41f8121d3..616e786e1 100644 --- a/src/net/ea/adminrecv.h +++ b/src/net/tmwa/adminrecv.h @@ -21,8 +21,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef NET_EA_ADMINRECV_H -#define NET_EA_ADMINRECV_H +#ifndef NET_TMWA_ADMINRECV_H +#define NET_TMWA_ADMINRECV_H #include "localconsts.h" @@ -31,12 +31,12 @@ namespace Net class MessageIn; } // namespace Net -namespace Ea +namespace TmwAthena { namespace AdminRecv { void processKickAck(Net::MessageIn &msg); } // namespace AdminRecv -} // namespace Ea +} // namespace TmwAthena -#endif // NET_EA_ADMINRECV_H +#endif // NET_TMWA_ADMINRECV_H diff --git a/src/net/tmwa/network.cpp b/src/net/tmwa/network.cpp index 0fec580a6..f070e1cf3 100644 --- a/src/net/tmwa/network.cpp +++ b/src/net/tmwa/network.cpp @@ -27,7 +27,6 @@ #include "net/packetinfo.h" -#include "net/ea/adminrecv.h" #include "net/ea/beingrecv.h" #include "net/ea/buysellrecv.h" #include "net/ea/charserverrecv.h" @@ -43,6 +42,7 @@ #include "net/ea/skillrecv.h" #include "net/ea/traderecv.h" +#include "net/tmwa/adminrecv.h" #include "net/tmwa/beingrecv.h" #include "net/tmwa/buysellrecv.h" #include "net/tmwa/charserverrecv.h" diff --git a/src/net/tmwa/packetsin.inc b/src/net/tmwa/packetsin.inc index dbfdbd494..47f87c768 100644 --- a/src/net/tmwa/packetsin.inc +++ b/src/net/tmwa/packetsin.inc @@ -21,7 +21,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -packet(SMSG_ADMIN_KICK_ACK, 0x00cd, 6, &Ea::AdminRecv::processKickAck, 0); +packet(SMSG_ADMIN_KICK_ACK, 0x00cd, 6, &AdminRecv::processKickAck, 0); packet(SMSG_BEING_ACTION, 0x008a, 29, &Ea::BeingRecv::processBeingAction, 0); packet(SMSG_BEING_CHANGE_DIRECTION, 0x009c, 9, &BeingRecv::processBeingChangeDirection, 0); packet(SMSG_BEING_CHANGE_LOOKS, 0x00c3, 8, &BeingRecv::processBeingChangeLook, 0); |