diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-10-23 19:21:44 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-10-23 19:21:44 -0400 |
commit | 289a7dbac32a981897e12a3c250f0b6c67eec809 (patch) | |
tree | b2cc8602755d501b7817f9b1c5973d0b01b4cf2e | |
parent | 1ae91166016ec70a242c6dbb14c9ca5e77b1313f (diff) | |
parent | 7edc594ee732960733d34309980d0e7190e35fb2 (diff) | |
download | tor-289a7dbac32a981897e12a3c250f0b6c67eec809.tar.gz tor-289a7dbac32a981897e12a3c250f0b6c67eec809.zip |
Merge branch 'maint-0.3.4' into maint-0.3.5
-rw-r--r-- | changes/bug27740 | 4 | ||||
-rw-r--r-- | changes/bug27804 | 3 | ||||
-rw-r--r-- | src/rust/protover/ffi.rs | 3 | ||||
-rw-r--r-- | src/test/test_protover.c | 1 |
4 files changed, 11 insertions, 0 deletions
diff --git a/changes/bug27740 b/changes/bug27740 new file mode 100644 index 0000000000..76a17b7dda --- /dev/null +++ b/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. diff --git a/changes/bug27804 b/changes/bug27804 new file mode 100644 index 0000000000..fa7fec0bc5 --- /dev/null +++ b/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. diff --git a/src/rust/protover/ffi.rs b/src/rust/protover/ffi.rs index 0c28d032c6..f17f30127d 100644 --- a/src/rust/protover/ffi.rs +++ b/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, diff --git a/src/test/test_protover.c b/src/test/test_protover.c index b835e28ab5..5f9a8b7937 100644 --- a/src/test/test_protover.c +++ b/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); |