diff --git a/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp b/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp index a82e8da0..94d9a603 100644 --- a/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp +++ b/Extenders/agent_beacon/src_beacon/beacon/Commander.cpp @@ -15,6 +15,14 @@ void Commander::ProcessCommandTasks(BYTE* recv, ULONG recvSize, Packer* outPacke *inPacker = Packer( recv, recvSize ); ULONG packerSize = inPacker->Unpack32(); + + // Check if the packer size is valid + if (packerSize > recvSize - 4) + { + MemFreeLocal((LPVOID*)&inPacker, sizeof(Packer)); + return; + } + while ( packerSize + 4 > inPacker->datasize()) { ULONG CommandId = inPacker->Unpack32();