Skip to content
Snippets Groups Projects
Commit 169bc670 authored by Nick Mathewson's avatar Nick Mathewson :game_die:
Browse files

Merge remote-tracking branch 'onionk/rust-allsupportednull1' into maint-0.3.3

parents 93fd924b 42558df7
No related branches found
No related tags found
No related merge requests found
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.
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.
......@@ -68,12 +68,10 @@ pub extern "C" fn protover_all_supported(
if maybe_unsupported.is_some() {
let unsupported: UnvalidatedProtoEntry = maybe_unsupported.unwrap();
let c_unsupported: CString = match CString::new(unsupported.to_string()) {
Ok(n) => n,
Err(_) => return 1,
};
let ptr = c_unsupported.into_raw();
if missing_out.is_null() {
return 0;
}
let ptr = allocate_and_copy_string(&unsupported.to_string());
unsafe { *missing_out = ptr };
return 0;
......
......@@ -259,6 +259,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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment