Remove usage of libc functions
This commit is contained in:
parent
a0657d2652
commit
69faa5626e
1 changed files with 42 additions and 51 deletions
|
@ -5,13 +5,13 @@
|
|||
clippy::too_many_arguments
|
||||
)]
|
||||
|
||||
use std::ffi::{CStr, CString};
|
||||
use std::{
|
||||
ffi::{CStr, CString},
|
||||
ptr,
|
||||
};
|
||||
|
||||
use thiserror::Error;
|
||||
extern "C" {
|
||||
fn memcpy(_: *mut libc::c_void, _: *const libc::c_void, _: u64) -> *mut libc::c_void;
|
||||
fn memset(_: *mut libc::c_void, _: i32, _: u64) -> *mut libc::c_void;
|
||||
}
|
||||
|
||||
type size_t = u64;
|
||||
type int64_t = i64;
|
||||
type uint16_t = u16;
|
||||
|
@ -626,11 +626,12 @@ unsafe fn divisor_add(src1: *const TDivisor, src2: *const TDivisor, mut dst: *mu
|
|||
v[i as usize] = residue_mul(v[i as usize], c1[0_i32 as usize]);
|
||||
i += 1;
|
||||
}
|
||||
memcpy(
|
||||
tmp.as_mut_ptr() as *mut libc::c_void,
|
||||
f.as_ptr() as *const libc::c_void,
|
||||
(6_i32 as u64).wrapping_mul(::std::mem::size_of::<uint64_t>() as u64),
|
||||
);
|
||||
tmp[0] = f[0];
|
||||
tmp[1] = f[1];
|
||||
tmp[2] = f[2];
|
||||
tmp[3] = f[3];
|
||||
tmp[4] = f[4];
|
||||
tmp[5] = f[5];
|
||||
tmpdeg = 5_i32;
|
||||
tmpdeg = polynomial_mul(
|
||||
1_i32,
|
||||
|
@ -675,11 +676,9 @@ unsafe fn divisor_add(src1: *const TDivisor, src2: *const TDivisor, mut dst: *mu
|
|||
udiv.as_mut_ptr(),
|
||||
);
|
||||
vdeg -= ddeg;
|
||||
memcpy(
|
||||
v.as_mut_ptr() as *mut libc::c_void,
|
||||
udiv.as_mut_ptr() as *const libc::c_void,
|
||||
((vdeg + 1_i32) as u64).wrapping_mul(::std::mem::size_of::<uint64_t>() as u64),
|
||||
);
|
||||
for i in 0..=vdeg {
|
||||
v[i as usize] = udiv[i as usize];
|
||||
}
|
||||
}
|
||||
}
|
||||
vdeg = polynomial_div_monic(
|
||||
|
@ -939,20 +938,18 @@ unsafe fn Mix(
|
|||
let half: size_t = bufSize.wrapping_div(2_i32 as u64);
|
||||
let mut external_counter = 0_i32;
|
||||
while external_counter < 4_i32 {
|
||||
memset(
|
||||
sha1_input.as_mut_ptr() as *mut libc::c_void,
|
||||
0_i32,
|
||||
::std::mem::size_of::<[libc::c_uchar; 64]>() as u64,
|
||||
for n in &mut sha1_input {
|
||||
*n = 0;
|
||||
}
|
||||
ptr::copy_nonoverlapping(
|
||||
buffer.offset(half as isize),
|
||||
sha1_input.as_mut_ptr(),
|
||||
half as usize,
|
||||
);
|
||||
memcpy(
|
||||
sha1_input.as_mut_ptr() as *mut libc::c_void,
|
||||
buffer.offset(half as isize) as *const libc::c_void,
|
||||
half,
|
||||
);
|
||||
memcpy(
|
||||
sha1_input.as_mut_ptr().offset(half as isize) as *mut libc::c_void,
|
||||
ptr::copy_nonoverlapping(
|
||||
key as *const libc::c_void,
|
||||
keySize,
|
||||
sha1_input.as_mut_ptr().offset(half as isize) as *mut libc::c_void,
|
||||
keySize as usize,
|
||||
);
|
||||
sha1_input[half.wrapping_add(keySize) as usize] = 0x80_i32 as libc::c_uchar;
|
||||
sha1_input[(::std::mem::size_of::<[libc::c_uchar; 64]>() as u64).wrapping_sub(1_i32 as u64)
|
||||
|
@ -995,20 +992,14 @@ unsafe fn Unmix(
|
|||
let half: size_t = bufSize.wrapping_div(2_i32 as u64);
|
||||
let mut external_counter = 0_i32;
|
||||
while external_counter < 4_i32 {
|
||||
memset(
|
||||
sha1_input.as_mut_ptr() as *mut libc::c_void,
|
||||
0_i32,
|
||||
::std::mem::size_of::<[libc::c_uchar; 64]>() as u64,
|
||||
);
|
||||
memcpy(
|
||||
sha1_input.as_mut_ptr() as *mut libc::c_void,
|
||||
buffer as *const libc::c_void,
|
||||
half,
|
||||
);
|
||||
memcpy(
|
||||
sha1_input.as_mut_ptr().offset(half as isize) as *mut libc::c_void,
|
||||
key as *const libc::c_void,
|
||||
keySize,
|
||||
for n in &mut sha1_input {
|
||||
*n = 0;
|
||||
}
|
||||
ptr::copy_nonoverlapping(buffer, sha1_input.as_mut_ptr(), half as usize);
|
||||
ptr::copy_nonoverlapping(
|
||||
key,
|
||||
sha1_input.as_mut_ptr().offset(half as isize),
|
||||
keySize as usize,
|
||||
);
|
||||
sha1_input[half.wrapping_add(keySize) as usize] = 0x80_i32 as libc::c_uchar;
|
||||
sha1_input[(::std::mem::size_of::<[libc::c_uchar; 64]>() as u64).wrapping_sub(1_i32 as u64)
|
||||
|
@ -1132,10 +1123,10 @@ unsafe fn Generate(
|
|||
ProductIDHigh: 0,
|
||||
KeySHA1: 0,
|
||||
};
|
||||
memcpy(
|
||||
&mut parsed as *mut C2RustUnnamed_4 as *mut libc::c_void,
|
||||
ptr::copy_nonoverlapping(
|
||||
installation_id.as_mut_ptr() as *const libc::c_void,
|
||||
::std::mem::size_of::<C2RustUnnamed_4>() as u64,
|
||||
&mut parsed as *mut C2RustUnnamed_4 as *mut libc::c_void,
|
||||
std::mem::size_of::<C2RustUnnamed_4>(),
|
||||
);
|
||||
let productId1: u32 = (parsed.ProductIDLow & ((1_i32 << 17_i32) - 1_i32) as u64) as u32;
|
||||
let productId2: u32 =
|
||||
|
@ -1156,19 +1147,19 @@ unsafe fn Generate(
|
|||
}
|
||||
let mut keybuf: [libc::c_uchar; 16] = [0; 16];
|
||||
let mut hardware_id = parsed.HardwareID;
|
||||
memcpy(
|
||||
ptr::copy_nonoverlapping(
|
||||
&mut hardware_id as *mut u64 as *const libc::c_void,
|
||||
keybuf.as_mut_ptr() as *mut libc::c_void,
|
||||
&mut hardware_id as *mut uint64_t as *const libc::c_void,
|
||||
8_i32 as u64,
|
||||
8,
|
||||
);
|
||||
let mut productIdMixed: uint64_t = (productId1 as uint64_t) << 41_i32
|
||||
| (productId2 as uint64_t) << 58_i32
|
||||
| (productId3 as uint64_t) << 17_i32
|
||||
| productId4 as u64;
|
||||
memcpy(
|
||||
keybuf.as_mut_ptr().offset(8_i32 as isize) as *mut libc::c_void,
|
||||
&mut productIdMixed as *mut uint64_t as *const libc::c_void,
|
||||
8_i32 as u64,
|
||||
ptr::copy_nonoverlapping(
|
||||
&mut productIdMixed as *mut u64 as *const libc::c_void,
|
||||
keybuf.as_mut_ptr().offset(8) as *mut libc::c_void,
|
||||
8,
|
||||
);
|
||||
let mut d_0: TDivisor = TDivisor {
|
||||
u: [0; 2],
|
||||
|
|
Loading…
Add table
Reference in a new issue