Fix some warnings by either factoring out or allowing in one case.

This commit is contained in:
Adam Ierymenko 2022-11-03 15:37:12 -04:00
parent 80cee57255
commit ceaba4f725
No known key found for this signature in database
GPG key ID: C8877CF2D7A5D7F3
4 changed files with 9 additions and 8 deletions

View file

@ -1,13 +1,12 @@
// (c) 2020-2022 ZeroTier, Inc. -- currently propritery pending actual release and licensing. See LICENSE.md.
use std::mem::MaybeUninit;
use std::sync::atomic::{AtomicU64, Ordering};
use openssl::rand::rand_bytes;
pub fn next_u32_secure() -> u32 {
unsafe {
let mut tmp: [u32; 1] = MaybeUninit::uninit().assume_init();
let mut tmp = [0u32; 1];
assert!(rand_bytes(&mut *(tmp.as_mut_ptr().cast::<[u8; 4]>())).is_ok());
tmp[0]
}
@ -15,7 +14,7 @@ pub fn next_u32_secure() -> u32 {
pub fn next_u64_secure() -> u64 {
unsafe {
let mut tmp: [u64; 1] = MaybeUninit::uninit().assume_init();
let mut tmp = [0u64; 1];
assert!(rand_bytes(&mut *(tmp.as_mut_ptr().cast::<[u8; 8]>())).is_ok());
tmp[0]
}
@ -23,7 +22,7 @@ pub fn next_u64_secure() -> u64 {
pub fn next_u128_secure() -> u128 {
unsafe {
let mut tmp: [u128; 1] = MaybeUninit::uninit().assume_init();
let mut tmp = [0u128; 1];
assert!(rand_bytes(&mut *(tmp.as_mut_ptr().cast::<[u8; 16]>())).is_ok());
tmp[0]
}
@ -36,7 +35,7 @@ pub fn fill_bytes_secure(dest: &mut [u8]) {
#[inline(always)]
pub fn get_bytes_secure<const COUNT: usize>() -> [u8; COUNT] {
let mut tmp: [u8; COUNT] = unsafe { MaybeUninit::uninit().assume_init() };
let mut tmp = [0u8; COUNT];
assert!(rand_bytes(&mut tmp).is_ok());
tmp
}

View file

@ -326,7 +326,7 @@ pub mod v1 {
#[inline(always)]
pub fn aes_gmac_siv_tag(&self) -> [u8; 16] {
let mut id = unsafe { MaybeUninit::<[u8; 16]>::uninit().assume_init() };
let mut id = 0u128.to_ne_bytes();
id[0..8].copy_from_slice(&self.id);
id[8..16].copy_from_slice(&self.mac);
id
@ -335,7 +335,7 @@ pub mod v1 {
#[inline(always)]
pub fn get_packet_aad_bytes(destination: Address, source: Address, flags_cipher_hops: u8) -> [u8; 11] {
let mut id = unsafe { MaybeUninit::<[u8; 11]>::uninit().assume_init() };
let mut id = [0u8; 11];
id[0..5].copy_from_slice(&destination.to_bytes());
id[5..10].copy_from_slice(&source.to_bytes());
id[10] = flags_cipher_hops & FLAGS_FIELD_MASK_HIDE_HOPS;
@ -530,7 +530,7 @@ pub mod v1 {
/// (including the verb) is returned.
pub fn compress(payload: &mut [u8]) -> usize {
if payload.len() > 32 {
let mut tmp: [u8; 65536] = unsafe { MaybeUninit::uninit().assume_init() };
let mut tmp = [0u8; 65536];
if let Ok(mut compressed_size) = lz4_flex::block::compress_into(&payload[1..], &mut tmp) {
if compressed_size < (payload.len() - 1) {
payload[0] |= VERB_FLAG_COMPRESSED;

View file

@ -11,6 +11,7 @@ pub struct RingBuffer<T, const C: usize> {
impl<T, const C: usize> RingBuffer<T, C> {
#[inline]
pub fn new() -> Self {
#[allow(invalid_value)]
let mut tmp: Self = unsafe { MaybeUninit::uninit().assume_init() };
tmp.p = 0;
tmp

View file

@ -114,6 +114,7 @@ impl<K: Eq + PartialEq + Hash + Clone, V, const C: usize, const B: usize> RingBu
pub fn new(salt: u32) -> Self {
debug_assert!(C <= EMPTY as usize);
debug_assert!(B <= EMPTY as usize);
#[allow(invalid_value)]
let mut tmp: Self = unsafe { MaybeUninit::uninit().assume_init() };
// EMPTY is the maximum value of the indices, which is all 0xff, so this sets all indices to EMPTY.
unsafe { std::ptr::write_bytes(&mut tmp, 0xff, 1) };