Narrow the scope of unsafe in confid::generate

This commit is contained in:
Alex Page 2023-06-22 01:44:38 -04:00
parent 2c41fe6c21
commit 6d27106e35

View file

@ -1342,20 +1342,20 @@ pub enum ConfirmationIdError {
} }
pub fn generate(installation_id: &str) -> Result<String, ConfirmationIdError> { pub fn generate(installation_id: &str) -> Result<String, ConfirmationIdError> {
let inst_id = CString::new(installation_id).unwrap();
let conf_id = [0u8; 49];
let result = unsafe { Generate(inst_id.as_ptr(), conf_id.as_ptr() as *mut i8) };
match result {
0 => {}
1 => return Err(ConfirmationIdError::TooShort),
2 => return Err(ConfirmationIdError::TooLarge),
3 => return Err(ConfirmationIdError::InvalidCharacter),
4 => return Err(ConfirmationIdError::InvalidCheckDigit),
5 => return Err(ConfirmationIdError::UnknownVersion),
6 => return Err(ConfirmationIdError::Unlucky),
_ => panic!("Unknown error code: {}", result),
}
unsafe { unsafe {
let inst_id = CString::new(installation_id).unwrap();
let conf_id = [0u8; 49];
let result = Generate(inst_id.as_ptr(), conf_id.as_ptr() as *mut i8);
match result {
0 => {}
1 => return Err(ConfirmationIdError::TooShort),
2 => return Err(ConfirmationIdError::TooLarge),
3 => return Err(ConfirmationIdError::InvalidCharacter),
4 => return Err(ConfirmationIdError::InvalidCheckDigit),
5 => return Err(ConfirmationIdError::UnknownVersion),
6 => return Err(ConfirmationIdError::Unlucky),
_ => panic!("Unknown error code: {}", result),
}
Ok(CStr::from_ptr(conf_id.as_ptr() as *const i8) Ok(CStr::from_ptr(conf_id.as_ptr() as *const i8)
.to_str() .to_str()
.unwrap() .unwrap()