diff --git a/default.nix b/default.nix index 1a96e22..aa32fc2 100644 --- a/default.nix +++ b/default.nix @@ -3,8 +3,8 @@ with pkgs; let agent_src = fetchgit { url = "https://gitea.rixxc.de/rixxc/x25519_agent.git"; - rev = "b7af39ff804a34bab696cb8ed4ff820e57769aba"; - hash = "sha256-QUNhUehV0/cfQOQumYRTZvNwBIlgRMz7yN2/wRCNDEE="; + rev = "201f270624487ded538b63cc5416456bd5b8ba18"; + hash = "sha256-KPaKG+t3qSMy4Y7fd0PlBWZiZYcs7M1Clmn75emC9LU="; }; agent = callPackage "${agent_src}/default.nix" { }; diff --git a/src/main.rs b/src/main.rs index 8451ddb..75b37b6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use libc::{ - c_char, c_int, c_void, mmap, perror, MAP_FAILED, MAP_PRIVATE, MAP_SHARED, PROT_READ, PROT_WRITE, + c_int, c_void, mmap, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE, }; use std::fs::File; use std::os::fd::AsRawFd; @@ -9,7 +9,7 @@ const SHARED_MEMORY_SIZE: usize = 1024; #[link(name = "agent")] extern "C" { - fn agent_start(shared_memory: *mut u8, sync_memory: *mut u8, private_mem: *mut u8); + fn agent_start(shared_memory: *mut u8, sync_memory: *mut u8, private_mem_fd: u64); } fn main() { @@ -51,21 +51,12 @@ fn main() { .read(true) .write(true) .open(&args[2]) - .expect("Cannot open KEY_FILE"); - - let private_mem = unsafe { - mmap( - ptr::null_mut() as *mut c_void, - 32 * 100, - PROT_READ | PROT_WRITE, - MAP_SHARED, - private_file.as_raw_fd(), - 0, - ) - } as *mut u8; - assert_ne!(private_mem, MAP_FAILED as *mut u8); + .expect("Cannot open KEY_FILE") + .as_raw_fd() + .try_into() + .unwrap(); unsafe { - agent_start(shared_memory, sync_memory, private_mem); + agent_start(shared_memory, sync_memory, private_file); } }