diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-05-22 13:35:33 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-05-22 13:35:33 -0400 |
commit | cde5c9d0c335e51c254251f018e9de620c27d9db (patch) | |
tree | 9fc9d257e215e8623b9118c925d54a69eb5915b8 /src/rust/protover/ffi.rs | |
parent | b858f576c327f4fd0a2ead16dc6d6bf7b721829a (diff) | |
parent | a5d4ce2b393955f60962d3db8744a846506c3e7b (diff) | |
download | tor-cde5c9d0c335e51c254251f018e9de620c27d9db.tar.gz tor-cde5c9d0c335e51c254251f018e9de620c27d9db.zip |
Merge branch 'maint-0.3.3'
Diffstat (limited to 'src/rust/protover/ffi.rs')
-rw-r--r-- | src/rust/protover/ffi.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/rust/protover/ffi.rs b/src/rust/protover/ffi.rs index 1e0d9d6bff..e3e545db75 100644 --- a/src/rust/protover/ffi.rs +++ b/src/rust/protover/ffi.rs @@ -113,6 +113,32 @@ pub extern "C" fn protocol_list_supports_protocol( } } +#[no_mangle] +pub extern "C" fn protover_contains_long_protocol_names_( + c_protocol_list: *const c_char +) -> c_int { + if c_protocol_list.is_null() { + return 1; + } + + // Require an unsafe block to read the version from a C string. The pointer + // is checked above to ensure it is not null. + let c_str: &CStr = unsafe { CStr::from_ptr(c_protocol_list) }; + + let protocol_list = match c_str.to_str() { + Ok(n) => n, + Err(_) => return 1 + }; + + let protocol_entry : Result<UnvalidatedProtoEntry,_> = + protocol_list.parse(); + + match protocol_entry { + Ok(_) => 0, + Err(_) => 1, + } +} + /// Provide an interface for C to translate arguments and return types for /// protover::list_supports_protocol_or_later #[no_mangle] |