From 6d27106e35bf76f57d491f72647708d3e482b438 Mon Sep 17 00:00:00 2001 From: Alex Page Date: Thu, 22 Jun 2023 01:44:38 -0400 Subject: [PATCH] Narrow the scope of unsafe in confid::generate --- src/confid.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/confid.rs b/src/confid.rs index 7812d38..9d66035 100644 --- a/src/confid.rs +++ b/src/confid.rs @@ -1342,20 +1342,20 @@ pub enum ConfirmationIdError { } pub fn generate(installation_id: &str) -> Result { + 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 { - 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) .to_str() .unwrap()