Skip to content

Commit f006369

Browse files
Rust wrapper: check kdr_index range in srtp_kdf() and srtcp_kdf()
Fix F-1257
1 parent 5c10fe9 commit f006369

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

  • wrapper/rust/wolfssl-wolfcrypt/src

wrapper/rust/wolfssl-wolfcrypt/src/kdf.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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)]
585585
pub 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)]
685690
pub 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

Comments
 (0)