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

Fix memory leak in CryptoDigest type

If you're owning a C pointer, you need to implement Drop.
parent 592e8ac3
No related branches found
No related tags found
No related merge requests found
......@@ -140,7 +140,7 @@ extern "C" {
fn crypto_digest_new() -> *mut crypto_digest_t;
fn crypto_digest256_new(algorithm: digest_algorithm_t) -> *mut crypto_digest_t;
fn crypto_digest512_new(algorithm: digest_algorithm_t) -> *mut crypto_digest_t;
fn crypto_digest_free(digest: *mut crypto_digest_t);
fn crypto_digest_free_(digest: *mut crypto_digest_t);
fn crypto_digest_add_bytes(digest: *mut crypto_digest_t, data: *const c_char, len: size_t);
fn crypto_digest_get_digest(digest: *mut crypto_digest_t, out: *mut c_char, out_len: size_t);
fn crypto_digest_dup(digest: *const crypto_digest_t) -> *mut crypto_digest_t;
......@@ -292,6 +292,14 @@ impl CryptoDigest {
}
}
impl Drop for CryptoDigest {
fn drop(&mut self) {
unsafe {
crypto_digest_free_(self.0 as *mut crypto_digest_t);
}
}
}
/// Get the 256-bit digest output of a `crypto_digest_t`.
///
/// # Inputs
......
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