diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 9e3c47caea2..24406cdbdab 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -733,6 +733,10 @@ int WorldSocket::ProcessIncoming(WorldPacket* new_pct) return -1; } + // prevent invalid memory access/crash with custom opcodes + if (opcode >= NUM_OPCODE_HANDLERS) + return 0; + OpcodeHandler const* handler = opcodeTable[opcode]; if (!handler || handler->Status == STATUS_UNHANDLED) {