Browse Source

Merge branch 'maint-0.3.4' into maint-0.3.5

Nick Mathewson 5 years ago
parent
commit
289a7dbac3
4 changed files with 11 additions and 0 deletions
  1. 4 0
      changes/bug27740
  2. 3 0
      changes/bug27804
  3. 3 0
      src/rust/protover/ffi.rs
  4. 1 0
      src/test/test_protover.c

+ 4 - 0
changes/bug27740

@@ -0,0 +1,4 @@
+  o Minor bugfixes (rust):
+    - Return a string that can be safely freed by C code, not one created by
+      the rust allocator, in protover_all_supported(). Fixes bug 27740; bugfix
+      on 0.3.3.1-alpha.

+ 3 - 0
changes/bug27804

@@ -0,0 +1,3 @@
+  o Minor bugfixes (rust):
+    - Fix a potential null dereference in protover_all_supported().
+      Add a test for it. Fixes bug 27804; bugfix on 0.3.3.1-alpha.

+ 3 - 0
src/rust/protover/ffi.rs

@@ -62,6 +62,9 @@ pub extern "C" fn protover_all_supported(
         };
 
     if let Some(unsupported) = relay_proto_entry.all_supported() {
+        if missing_out.is_null() {
+            return 0;
+        }
         let c_unsupported: CString = match CString::new(unsupported.to_string()) {
             Ok(n) => n,
             Err(_) => return 1,

+ 1 - 0
src/test/test_protover.c

@@ -268,6 +268,7 @@ test_protover_all_supported(void *arg)
   tt_ptr_op(msg, OP_EQ, NULL);
 
   // Some things we don't support
+  tt_assert(! protover_all_supported("Wombat=9", NULL));
   tt_assert(! protover_all_supported("Wombat=9", &msg));
   tt_str_op(msg, OP_EQ, "Wombat=9");
   tor_free(msg);