@@ -423,6 +423,11 @@ impl Packet {
423423 /// ```
424424 #[ inline]
425425 pub fn read < T : Pod > ( & self , offset : usize ) -> Result < T , PacketError > {
426+ assert ! (
427+ offset < 4096 ,
428+ "'offset' is wildly out of range and indicates a bug"
429+ ) ;
430+
426431 let start = self . head + offset;
427432 if start > self . tail {
428433 return Err ( PacketError :: InvalidOffset {
@@ -499,6 +504,11 @@ impl Packet {
499504 /// ```
500505 #[ inline]
501506 pub fn write < T : Pod > ( & mut self , offset : usize , item : T ) -> Result < ( ) , PacketError > {
507+ assert ! (
508+ offset < 4096 ,
509+ "'offset' is wildly out of range and indicates a bug"
510+ ) ;
511+
502512 let start = self . head + offset;
503513 if start > self . tail {
504514 return Err ( PacketError :: InvalidOffset {
@@ -560,6 +570,23 @@ impl Packet {
560570 offset : usize ,
561571 array : & mut [ u8 ; N ] ,
562572 ) -> Result < ( ) , PacketError > {
573+ struct AssertReasonable < const N : usize > ;
574+
575+ impl < const N : usize > AssertReasonable < N > {
576+ const OK : ( ) = assert ! ( N < 4096 , "the array size far too large" ) ;
577+ }
578+
579+ const fn assert_reasonable < const N : usize > ( ) {
580+ let ( ) = AssertReasonable :: < N > :: OK ;
581+ }
582+
583+ assert_reasonable :: < N > ( ) ;
584+
585+ assert ! (
586+ offset < 4096 ,
587+ "'offset' is wildly out of range and indicates a bug"
588+ ) ;
589+
563590 let start = self . head + offset;
564591 if start + N > self . tail {
565592 return Err ( PacketError :: InsufficientData {
@@ -619,6 +646,12 @@ impl Packet {
619646 /// ```
620647 #[ inline]
621648 pub fn insert ( & mut self , offset : usize , slice : & [ u8 ] ) -> Result < ( ) , PacketError > {
649+ assert ! (
650+ offset < 4096 ,
651+ "'offset' is wildly out of range and indicates a bug"
652+ ) ;
653+ assert ! ( slice. len( ) <= 4096 , "the slice length is far too large" ) ;
654+
622655 if self . tail + slice. len ( ) > self . capacity {
623656 return Err ( PacketError :: InvalidPacketLength { } ) ;
624657 } else if offset > self . tail {
0 commit comments