diff --git a/src/main.cpp b/src/main.cpp index f6f944f..1c7f4ec 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -144,6 +144,10 @@ int SDL_main(int argc, char* argv[]) } pcpp::UdpLayer* udp = parsed.getLayerOfType(); + if (udp == NULL) { + return; + } + int len = udp->getDataLen() - udp->getHeaderLen(); uint8_t* data_start = udp->getDataPtr(udp->getHeaderLen()); @@ -333,6 +337,10 @@ void do_net(std::vector work, const char* packet_dump_path) int user_len = messageExtractor.GetMessageLength(); int channel = messageExtractor.GetChannelId(); + if (user_len <= sizeof(UNET::NetMessageFragmentedHeader)) { + continue; + } + if (channel == 0 || channel == 1 || channel == 2) // ReliableFragmented { UNET::NetMessageFragmentedHeader* hr = reinterpret_cast(user_data);