mirror of
https://github.com/Qortal/pirate-librustzcash.git
synced 2025-07-31 12:31:22 +00:00
Use explicit sizes for pointers to arrays in FFI
This commit is contained in:
@@ -1228,8 +1228,8 @@ pub extern "system" fn librustzcash_mmr_append(
|
|||||||
p_len: size_t,
|
p_len: size_t,
|
||||||
// New node pointer
|
// New node pointer
|
||||||
nn_ptr: *const [u8; zcash_mmr::MAX_NODE_DATA_SIZE],
|
nn_ptr: *const [u8; zcash_mmr::MAX_NODE_DATA_SIZE],
|
||||||
// Return of root commitment (32 byte hash)
|
// Return of root commitment
|
||||||
rt_ret: *mut u8,
|
rt_ret: *mut [u8; 32],
|
||||||
// Return buffer for appended leaves, should be pre-allocated of log2(t_len)+1 length
|
// Return buffer for appended leaves, should be pre-allocated of log2(t_len)+1 length
|
||||||
buf_ret: *mut [c_uchar; zcash_mmr::MAX_NODE_DATA_SIZE],
|
buf_ret: *mut [c_uchar; zcash_mmr::MAX_NODE_DATA_SIZE],
|
||||||
) -> u32 {
|
) -> u32 {
|
||||||
@@ -1269,7 +1269,7 @@ pub extern "system" fn librustzcash_mmr_append(
|
|||||||
.root_node()
|
.root_node()
|
||||||
.expect("Just added, should resolve always; qed");
|
.expect("Just added, should resolve always; qed");
|
||||||
unsafe {
|
unsafe {
|
||||||
slice::from_raw_parts_mut(rt_ret, 32).copy_from_slice(&root_node.data().subtree_commitment);
|
(*rt_ret).copy_from_slice(&root_node.data().subtree_commitment);
|
||||||
|
|
||||||
for (idx, next_buf) in slice::from_raw_parts_mut(buf_ret, return_count as usize)
|
for (idx, next_buf) in slice::from_raw_parts_mut(buf_ret, return_count as usize)
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
@@ -1300,8 +1300,8 @@ pub extern "system" fn librustzcash_mmr_delete(
|
|||||||
p_len: size_t,
|
p_len: size_t,
|
||||||
// Extra nodes loaded (for deletion) count
|
// Extra nodes loaded (for deletion) count
|
||||||
e_len: size_t,
|
e_len: size_t,
|
||||||
// Return of root commitment (32 byte hash)
|
// Return of root commitment
|
||||||
rt_ret: *mut u8,
|
rt_ret: *mut [u8; 32],
|
||||||
) -> u32 {
|
) -> u32 {
|
||||||
let mut tree = match construct_mmr_tree(cbranch, t_len, ni_ptr, n_ptr, p_len, e_len) {
|
let mut tree = match construct_mmr_tree(cbranch, t_len, ni_ptr, n_ptr, p_len, e_len) {
|
||||||
Ok(t) => t,
|
Ok(t) => t,
|
||||||
@@ -1318,7 +1318,7 @@ pub extern "system" fn librustzcash_mmr_delete(
|
|||||||
};
|
};
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
slice::from_raw_parts_mut(rt_ret, 32).copy_from_slice(
|
(*rt_ret).copy_from_slice(
|
||||||
&tree
|
&tree
|
||||||
.root_node()
|
.root_node()
|
||||||
.expect("Just generated without errors, root should be resolving")
|
.expect("Just generated without errors, root should be resolving")
|
||||||
@@ -1334,7 +1334,7 @@ pub extern "system" fn librustzcash_mmr_delete(
|
|||||||
pub extern "system" fn librustzcash_mmr_hash_node(
|
pub extern "system" fn librustzcash_mmr_hash_node(
|
||||||
cbranch: u32,
|
cbranch: u32,
|
||||||
n_ptr: *const [u8; zcash_mmr::MAX_NODE_DATA_SIZE],
|
n_ptr: *const [u8; zcash_mmr::MAX_NODE_DATA_SIZE],
|
||||||
h_ret: *mut u8,
|
h_ret: *mut [u8; 32],
|
||||||
) -> u32 {
|
) -> u32 {
|
||||||
let node_bytes: &[u8; zcash_mmr::MAX_NODE_DATA_SIZE] = unsafe {
|
let node_bytes: &[u8; zcash_mmr::MAX_NODE_DATA_SIZE] = unsafe {
|
||||||
match n_ptr.as_ref() {
|
match n_ptr.as_ref() {
|
||||||
@@ -1349,7 +1349,7 @@ pub extern "system" fn librustzcash_mmr_hash_node(
|
|||||||
};
|
};
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
slice::from_raw_parts_mut(h_ret, 32).copy_from_slice(&node.hash()[..]);
|
(*h_ret).copy_from_slice(&node.hash()[..]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user