*/
use super::ssh::SSHTransaction;
-use crate::core::{STREAM_TOCLIENT, STREAM_TOSERVER};
+use crate::core::STREAM_TOCLIENT;
use std::ptr;
#[no_mangle]
tx: *mut std::os::raw::c_void, buffer: *mut *const u8, buffer_len: *mut u32, direction: u8,
) -> u8 {
let tx = cast_pointer!(tx, SSHTransaction);
- match direction {
- STREAM_TOSERVER => {
- let m = &tx.cli_hdr.protover;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ if direction & STREAM_TOCLIENT != 0 {
+ let m = &tx.srv_hdr.protover;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- STREAM_TOCLIENT => {
- let m = &tx.srv_hdr.protover;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ } else {
+ let m = &tx.cli_hdr.protover;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- _ => {}
}
unsafe {
*buffer = ptr::null();
tx: *mut std::os::raw::c_void, buffer: *mut *const u8, buffer_len: *mut u32, direction: u8,
) -> u8 {
let tx = cast_pointer!(tx, SSHTransaction);
- match direction {
- STREAM_TOSERVER => {
- let m = &tx.cli_hdr.swver;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ if direction & STREAM_TOCLIENT != 0 {
+ let m = &tx.srv_hdr.swver;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- STREAM_TOCLIENT => {
- let m = &tx.srv_hdr.swver;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ } else {
+ let m = &tx.cli_hdr.swver;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- _ => {}
}
unsafe {
*buffer = ptr::null();
direction: u8,
) -> u8 {
let tx = cast_pointer!(tx, SSHTransaction);
- match direction {
- STREAM_TOSERVER => {
- let m = &tx.cli_hdr.hassh;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ if direction & STREAM_TOCLIENT != 0 {
+ let m = &tx.srv_hdr.hassh;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- STREAM_TOCLIENT => {
- let m = &tx.srv_hdr.hassh;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ } else {
+ let m = &tx.cli_hdr.hassh;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- _ => {}
}
unsafe {
*buffer = ptr::null();
direction: u8,
) -> u8 {
let tx = cast_pointer!(tx, SSHTransaction);
- match direction {
- STREAM_TOSERVER => {
- let m = &tx.cli_hdr.hassh_string;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ if direction & STREAM_TOCLIENT != 0 {
+ let m = &tx.srv_hdr.hassh_string;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- STREAM_TOCLIENT => {
- let m = &tx.srv_hdr.hassh_string;
- if m.len() > 0 {
- unsafe {
- *buffer = m.as_ptr();
- *buffer_len = m.len() as u32;
- }
- return 1;
+ } else {
+ let m = &tx.cli_hdr.hassh_string;
+ if m.len() > 0 {
+ unsafe {
+ *buffer = m.as_ptr();
+ *buffer_len = m.len() as u32;
}
+ return 1;
}
- _ => {}
}
unsafe {
*buffer = ptr::null();