Browse Source

Merge remote-tracking branch 'tor-github/pr/431' into maint-0.3.5

Nick Mathewson 5 years ago
parent
commit
97324a731f
2 changed files with 9 additions and 15 deletions
  1. 5 0
      changes/bug27741
  2. 4 15
      src/rust/protover/ffi.rs

+ 5 - 0
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.

+ 4 - 15
src/rust/protover/ffi.rs

@@ -187,11 +187,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("");
     }
@@ -203,16 +199,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);
     }