summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFedja Beader <fedja@protonmail.ch>2025-04-03 22:44:17 +0000
committerFedja Beader <fedja@protonmail.ch>2025-04-03 22:44:17 +0000
commit65f505ea28f29738e4d874f55d96d6e2579ba757 (patch)
treed216640a8cef9ae27afe593b037724834eacc4a1
parentbb01aea375047f23b5ddc4f481b611dff39003b2 (diff)
downloadmanaplus-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.txt4
-rw-r--r--src/Makefile.am4
-rw-r--r--src/net/eathena/adminrecv.cpp12
-rw-r--r--src/net/eathena/adminrecv.h1
-rw-r--r--src/net/eathena/network.cpp1
-rw-r--r--src/net/eathena/packetsin.inc2
-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.cpp2
-rw-r--r--src/net/tmwa/packetsin.inc2
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);