Conversation

Jarkko Sakkinen

rust learning of today: to avoid integer overflows when summing up lengths, always use checked_add in such situations :-)

E.g., this is wrong:

    let total_body_len =
        handle_area_size + parameter_area_size_field_len + param_area_size + sessions_len;

And this is right:

    let total_body_len = handle_area_size
        .checked_add(parameter_area_size_field_len)
        .and_then(|len| len.checked_add(param_area_size))
        .and_then(|len| len.checked_add(sessions_len))
        .ok_or(TpmProtocolError::IntegerTooLarge)?;

#rustlang

0
1
1