Commit 42558df7 authored by cypherpunks's avatar cypherpunks
Browse files

rust/protover: return C-allocated string in protover_all_supported()

The result of CString::into_raw() is not safe to free
with free() except under finicky and fragile circumstances
that we definitely don't meet right now.

This was missed in be583a34.
parent db89b4b1
Loading
Loading
Loading
Loading

changes/bug27740

0 → 100644
+4 −0
Original line number Diff line number Diff line
  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.
+1 −6
Original line number Diff line number Diff line
@@ -71,12 +71,7 @@ pub extern "C" fn protover_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,
        };

        let ptr = c_unsupported.into_raw();
        let ptr = allocate_and_copy_string(&unsupported.to_string());
        unsafe { *missing_out = ptr };

        return 0;