summaryrefslogtreecommitdiff
path: root/rust/src
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-09-27 17:40:15 -0400
committerMason Reed <mason@vector35.com>2025-10-22 00:36:24 -0400
commit1d554b5af1b43ced740725c1812949af1447b7ea (patch)
tree2e52f4200e186bea1f82582bcfc6f650baa26155 /rust/src
parent31ec051fd683d3747f10a0981b497d90f08d25a3 (diff)
[Rust] Fix custom `SecretsProvider` impl requiring data to be passed back in `get_data`
We want to provide no value in the case of the key not having an associated value
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/secrets_provider.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/rust/src/secrets_provider.rs b/rust/src/secrets_provider.rs
index a310b08e..da7bdece 100644
--- a/rust/src/secrets_provider.rs
+++ b/rust/src/secrets_provider.rs
@@ -8,7 +8,7 @@ use crate::string::{BnString, IntoCStr};
pub trait SecretsProvider {
fn has_data(&mut self, key: &str) -> bool;
- fn get_data(&mut self, key: &str) -> String;
+ fn get_data(&mut self, key: &str) -> Option<String>;
fn store_data(&mut self, key: &str, data: &str) -> bool;
fn delete_data(&mut self, key: &str) -> bool;
}
@@ -126,8 +126,10 @@ unsafe extern "C" fn cb_get_data<C: SecretsProvider>(
key: *const c_char,
) -> *mut c_char {
let ctxt: &mut C = &mut *(ctxt as *mut C);
- let result = ctxt.get_data(&CStr::from_ptr(key).to_string_lossy());
- BnString::into_raw(BnString::new(result))
+ match ctxt.get_data(&CStr::from_ptr(key).to_string_lossy()) {
+ Some(result) => BnString::into_raw(BnString::new(result)),
+ None => std::ptr::null_mut(),
+ }
}
unsafe extern "C" fn cb_store_data<C: SecretsProvider>(