diff options
author | teor <teor@torproject.org> | 2018-09-18 23:32:57 +1000 |
---|---|---|
committer | teor <teor@torproject.org> | 2018-09-18 23:32:57 +1000 |
commit | 7bf9c93ab3af5be6f0881d4bc21fd8d72becff96 (patch) | |
tree | d2c4c6e885670bd8a16a03437c434cebd46ca1d5 | |
parent | 1ae91166016ec70a242c6dbb14c9ca5e77b1313f (diff) | |
parent | 80ad15921cef42ac12da356584f217d2ead5cb09 (diff) | |
download | tor-7bf9c93ab3af5be6f0881d4bc21fd8d72becff96.tar.gz tor-7bf9c93ab3af5be6f0881d4bc21fd8d72becff96.zip |
Merge remote-tracking branch 'nickm/bug27741_033' into bug27741_035
Resolve conflicts due to rustfmt, and run rustfmt on the merged code.
-rw-r--r-- | changes/bug27741 | 5 | ||||
-rw-r--r-- | src/rust/protover/ffi.rs | 19 |
2 files changed, 9 insertions, 15 deletions
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 0c28d032c6..940f923327 100644 --- a/src/rust/protover/ffi.rs +++ b/src/rust/protover/ffi.rs @@ -184,11 +184,7 @@ pub extern "C" fn protover_get_supported_protocols() -> *const c_char { // // Why is the threshold a signed integer? —isis #[no_mangle] -pub extern "C" fn protover_compute_vote( - list: *const Stringlist, - threshold: c_int, - allow_long_proto_names: bool, -) -> *mut c_char { +pub extern "C" fn protover_compute_vote(list: *const Stringlist, threshold: c_int) -> *mut c_char { if list.is_null() { return allocate_and_copy_string(""); } @@ -200,16 +196,9 @@ pub extern "C" fn protover_compute_vote( let mut proto_entries: Vec<UnvalidatedProtoEntry> = Vec::new(); for datum in data { - let entry: UnvalidatedProtoEntry = if allow_long_proto_names { - match UnvalidatedProtoEntry::from_str_any_len(datum.as_str()) { - Ok(n) => n, - Err(_) => continue, - } - } else { - match datum.parse() { - Ok(n) => n, - Err(_) => continue, - } + let entry: UnvalidatedProtoEntry = match datum.parse() { + Ok(n) => n, + Err(_) => continue, }; proto_entries.push(entry); } |