From 80ad15921cef42ac12da356584f217d2ead5cb09 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 17 Sep 2018 11:50:46 -0400 Subject: [PATCH] Remove extraneous argument from Rust protover_compute_vote() This argument was added to match an older idea for the C api, but we decided not to do it that way in C. Fixes bug 27741; bugfix on 0.3.3.6 / TROVE-2018-005 fix. --- changes/bug27741 | 5 +++++ src/rust/protover/ffi.rs | 13 ++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 changes/bug27741 diff --git a/changes/bug27741 b/changes/bug27741 new file mode 100644 index 0000000000..531e264b63 --- /dev/null +++ b/changes/bug27741 @@ -0,0 +1,5 @@ + o Minor bugfixes (rust, directory authority): + - Fix an API mismatch in the rust implementation of + protover_compute_vote(). This bug could have caused crashes on any + directory authorities running Tor with Rust (which we do not yet + recommend). Fixes bug 27741; bugfix on 0.3.3.6. diff --git a/src/rust/protover/ffi.rs b/src/rust/protover/ffi.rs index 9656e8c318..f803bd0155 100644 --- a/src/rust/protover/ffi.rs +++ b/src/rust/protover/ffi.rs @@ -207,8 +207,7 @@ pub extern "C" fn protover_get_supported_protocols() -> *const c_char { #[no_mangle] pub extern "C" fn protover_compute_vote( list: *const Stringlist, - threshold: c_int, - allow_long_proto_names: bool, + threshold: c_int ) -> *mut c_char { if list.is_null() { @@ -223,13 +222,9 @@ pub extern "C" fn protover_compute_vote( let mut proto_entries: Vec = Vec::new(); for datum in data { - let entry: UnvalidatedProtoEntry = match allow_long_proto_names { - true => match UnvalidatedProtoEntry::from_str_any_len(datum.as_str()) { - Ok(n) => n, - Err(_) => continue}, - false => match datum.parse() { - Ok(n) => n, - Err(_) => continue}, + let entry: UnvalidatedProtoEntry = match datum.parse() { + Ok(n) => n, + Err(_) => continue }; proto_entries.push(entry); }