private static PcapngBlockHeader readPcapngBlockHeader(BinaryReader binaryReader, int curPacket) { if (binaryReader.BaseStream.Length - binaryReader.BaseStream.Position < 8) { throw new InvalidDataException("Stream cut short (packet " + curPacket + "), stopping read: " + (binaryReader.BaseStream.Length - binaryReader.BaseStream.Position)); } long blockStartPos = binaryReader.BaseStream.Position; PcapngBlockHeader blockHeader = PcapngBlockHeader.read(binaryReader); if (blockHeader.capturedLen > 50000) { throw new InvalidDataException("Enormous packet (packet " + curPacket + "), stopping read: " + blockHeader.capturedLen); } // Make sure there's enough room for an ethernet header if (blockHeader.capturedLen < 14) { binaryReader.BaseStream.Position += blockHeader.blockTotalLength - (binaryReader.BaseStream.Position - blockStartPos); return(null); } return(blockHeader); }