diff --git a/src/common/rust_types.c b/src/common/rust_types.c
index d116b515b836e0ab7f31652b7faa127cb6d394dd..1b6dd3990e0f1b7c135ed1a2f235f4db445dbab0 100644
--- a/src/common/rust_types.c
+++ b/src/common/rust_types.c
@@ -26,7 +26,7 @@ move_rust_str_to_c_and_free(rust_str_ref_t src, char **dest)
   }
 
   if (!dest) {
-    log_warn(LD_BUG, "Received a null pointer from caller to protover rust. "
+    log_warn(LD_BUG, "Received a null pointer from caller to rust. "
              "This results in a memory leak due to not freeing the rust "
              "string that was meant to be copied..");
     return;
diff --git a/src/or/protover_rust.c b/src/or/protover_rust.c
index ebe815357b920323a40dfdfb87178d52adf351e6..261555d1ec18ac817fecf9a45010a666380a1b11 100644
--- a/src/or/protover_rust.c
+++ b/src/or/protover_rust.c
@@ -85,7 +85,7 @@ protover_all_supported(const char *s, char **missing_out)
   rust_str_ref_t missing_out_copy = NULL;
   int is_supported  = rust_protover_all_supported(s, &missing_out_copy);
 
-  if (!is_supported) {
+  if (!is_supported && missing_out_copy != NULL) {
     move_rust_str_to_c_and_free(missing_out_copy, missing_out);
   }
 
diff --git a/src/rust/external/external.rs b/src/rust/external/external.rs
index 0e8d1eb0d84b4a12a8fa1222eb2da12819823aa3..f3267949c74c66cd33ccd5a5094f4d7dd5cbcc52 100644
--- a/src/rust/external/external.rs
+++ b/src/rust/external/external.rs
@@ -24,6 +24,6 @@ pub fn c_tor_version_as_new_as(platform: &str, cutoff: &str) -> bool {
     let result: c_int;
     unsafe {
         result = tor_version_as_new_as(c_platform.as_ptr(), c_cutoff.as_ptr());
-        result == 1
     }
+    result == 1
 }