File tree Expand file tree Collapse file tree
worker/test/src/RTC/SCTP/packet Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -789,4 +789,48 @@ SCENARIO("SCTP Packet", "[sctp][serializable]")
789789
790790 delete packet;
791791 }
792+
793+ SECTION (" Packet::BuildChunkInPlace() throws if given Chunk exceeds Packet buffer length" )
794+ {
795+ auto * packet = Packet::Factory (FactoryBuffer, 28 );
796+
797+ CHECK_PACKET (
798+ /* packet*/ packet,
799+ /* buffer*/ FactoryBuffer,
800+ /* bufferLength*/ 28 ,
801+ /* length*/ 12 ,
802+ /* frozen*/ false ,
803+ /* sourcePort*/ 0 ,
804+ /* destinationPort*/ 0 ,
805+ /* verificationTag*/ 0 ,
806+ /* checksum*/ 0 ,
807+ /* hasValidCrc32cChecksum*/ false ,
808+ /* chunksCount*/ 0 );
809+
810+ // Chunk 1: DATA, length: 16 bytes.
811+ auto * chunk1 = packet->BuildChunkInPlace <DataChunk>();
812+
813+ // Adding user data 10 bytes, must throw.
814+ REQUIRE_THROWS_AS (chunk1->SetUserData (DataBuffer, 10 ), MediaSoupError);
815+
816+ delete chunk1;
817+
818+ // Chunk 2: INIT, length: 20 bytes. Must throw.
819+ REQUIRE_THROWS_AS (packet->BuildChunkInPlace <InitChunk>(), MediaSoupError);
820+
821+ CHECK_PACKET (
822+ /* packet*/ packet,
823+ /* buffer*/ FactoryBuffer,
824+ /* bufferLength*/ 28 ,
825+ /* length*/ 12 ,
826+ /* frozen*/ false ,
827+ /* sourcePort*/ 0 ,
828+ /* destinationPort*/ 0 ,
829+ /* verificationTag*/ 0 ,
830+ /* checksum*/ 0 ,
831+ /* hasValidCrc32cChecksum*/ false ,
832+ /* chunksCount*/ 0 );
833+
834+ delete packet;
835+ }
792836}
You can’t perform that action at this time.
0 commit comments