@@ -584,6 +584,11 @@ pub fn ssh_kdf(typ: i32, key_id: u8, k: &[u8], h: &[u8], session_id: &[u8], key:
584584#[ cfg( kdf_srtp) ]
585585pub fn srtp_kdf ( key : & [ u8 ] , salt : & [ u8 ] , kdr_index : i32 , idx : & [ u8 ] ,
586586 key1 : & mut [ u8 ] , key2 : & mut [ u8 ] , key3 : & mut [ u8 ] ) -> Result < ( ) , i32 > {
587+ if !( kdr_index == -1 || ( 0 <= kdr_index && ( kdr_index as usize ) <= idx. len ( ) * 8 ) ) {
588+ // The kdr_index value must be either -1 or the number of bits that
589+ // will be read from the idx slice.
590+ return Err ( sys:: wolfCrypt_ErrorCodes_BAD_FUNC_ARG) ;
591+ }
587592 let key_size = key. len ( ) as u32 ;
588593 let salt_size = salt. len ( ) as u32 ;
589594 let key1_size = key1. len ( ) as u32 ;
@@ -684,6 +689,11 @@ pub fn srtp_kdf_label(key: &[u8], salt: &[u8], kdr_index: i32, idx: &[u8],
684689#[ cfg( kdf_srtp) ]
685690pub fn srtcp_kdf ( key : & [ u8 ] , salt : & [ u8 ] , kdr_index : i32 , idx : & [ u8 ] ,
686691 key1 : & mut [ u8 ] , key2 : & mut [ u8 ] , key3 : & mut [ u8 ] ) -> Result < ( ) , i32 > {
692+ if !( kdr_index == -1 || ( 0 <= kdr_index && ( kdr_index as usize ) <= idx. len ( ) * 8 ) ) {
693+ // The kdr_index value must be either -1 or the number of bits that
694+ // will be read from the idx slice.
695+ return Err ( sys:: wolfCrypt_ErrorCodes_BAD_FUNC_ARG) ;
696+ }
687697 let key_size = key. len ( ) as u32 ;
688698 let salt_size = salt. len ( ) as u32 ;
689699 let key1_size = key1. len ( ) as u32 ;
0 commit comments