diff options
author | Shocker <shocker@freakz.ro> | 2013-02-10 20:20:36 +0200 |
---|---|---|
committer | Shocker <shocker@freakz.ro> | 2013-02-10 20:20:36 +0200 |
commit | 82f7b337b2dafd16506033cdbfecc979bc6f7119 (patch) | |
tree | b5b6e94c3d608dbe77eee87adad665a1672d2fe2 /src | |
parent | 6dc9b4cc4474a00e801339d39f44e572e68ab757 (diff) |
Core/Opcodes: Prevent invalid memory access with custom opcodes
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
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) { |