Skip to content

Commit

Permalink
Minor changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Rubensei committed Nov 3, 2024
1 parent 1ec7a47 commit d846671
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 18 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ and this project adheres to
- `WinDivertError` has a `Send` variant
- `WinDivert::recv()` and `WinDivert::recv_ex()` buffer made mandatory on data
capturing layers and removed from non-capturing layers.
- Bumped `windows-rs` to 0.51.1
- Bumped `windows-rs` to 0.58.0
- Code refactor and cleanup
- Removed IOError variant from `WinDivertError`

Expand Down
2 changes: 1 addition & 1 deletion windivert/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ vendored = ["windivert-sys/vendored"]
static = ["vendored", "windivert-sys/static"]

[dependencies]
etherparse = "0.15"
etherparse = "0.16"
thiserror = "1"
windivert-sys = { version = "0.11.0-alpha.3", path = "../windivert-sys" }

Expand Down
8 changes: 4 additions & 4 deletions windivert/src/divert/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,14 @@ impl<L: layer::WinDivertLayerTrait> WinDivert<L> {

pub(crate) fn internal_partial_recv<'a>(
&self,
buffer: Option<&'a mut [u8]>,
mut buffer: Option<&'a mut [u8]>,
) -> Result<PacketEither<'a, L>, WinDivertError> {
let mut packet_length = 0;
let mut addr = MaybeUninit::uninit();
let (buffer_ptr, buffer_len) = if let Some(ref buffer) = buffer {
(buffer.as_ptr(), buffer.len())
let (buffer_ptr, buffer_len) = if let Some(buffer) = buffer.as_mut() {
(buffer.as_mut_ptr(), buffer.len())
} else {
(std::ptr::null(), 0)
(std::ptr::null_mut(), 0)
};

let res = unsafe {
Expand Down
27 changes: 15 additions & 12 deletions windivert/src/divert/network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,14 +135,15 @@ mod tests {
#[test]
fn recv_ok() {
let mut sys_wrapper = SysWrapper::default();
sys_wrapper
.expect_WinDivertRecv()
.returning(|_, pPacket, packetLen, pRecvLen, _| unsafe {
sys_wrapper.expect_WinDivertRecv().returning(
|_, pPacket, packetLen, pRecvLen, address| unsafe {
let mut buffer =
std::slice::from_raw_parts_mut(pPacket as *mut u8, packetLen as usize);
*pRecvLen = buffer.write(crate::test_data::ECHO_REQUEST).unwrap() as u32;
*address = WINDIVERT_ADDRESS::default();
1
});
},
);
let divert = setup_divert(sys_wrapper);
let mut buffer = vec![0; 1500];
let packet = divert.recv(&mut buffer[..]);
Expand All @@ -154,14 +155,15 @@ mod tests {
#[test]
fn partial_recv_full() {
let mut sys_wrapper = SysWrapper::default();
sys_wrapper
.expect_WinDivertRecv()
.returning(|_, pPacket, packetLen, pRecvLen, _| unsafe {
sys_wrapper.expect_WinDivertRecv().returning(
|_, pPacket, packetLen, pRecvLen, address| unsafe {
let mut buffer =
std::slice::from_raw_parts_mut(pPacket as *mut u8, packetLen as usize);
*pRecvLen = buffer.write(crate::test_data::ECHO_REQUEST).unwrap() as u32;
*address = WINDIVERT_ADDRESS::default();
1
});
},
);
let divert = setup_divert(sys_wrapper);
let mut buffer = vec![0; 1500];
let packet = divert.partial_recv(&mut buffer[..]);
Expand All @@ -178,15 +180,16 @@ mod tests {
#[test]
fn partial_recv_partial() {
let mut sys_wrapper = SysWrapper::default();
sys_wrapper
.expect_WinDivertRecv()
.returning(|_, pPacket, packetLen, pRecvLen, _| unsafe {
sys_wrapper.expect_WinDivertRecv().returning(
|_, pPacket, packetLen, pRecvLen, address| unsafe {
let mut buffer =
std::slice::from_raw_parts_mut(pPacket as *mut u8, packetLen as usize);
*pRecvLen = buffer.write(crate::test_data::ECHO_REQUEST).unwrap() as u32;
*address = WINDIVERT_ADDRESS::default();
SetLastError(windows::Win32::Foundation::ERROR_INSUFFICIENT_BUFFER);
0
});
},
);
let divert = setup_divert(sys_wrapper);
let mut buffer = vec![0; crate::test_data::ECHO_REQUEST.len() - 10];
let packet = divert.partial_recv(&mut buffer[..]);
Expand Down

0 comments on commit d846671

Please sign in to comment.