diff options
| author | Mason Reed <mason@vector35.com> | 2025-09-27 17:40:15 -0400 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2025-10-22 00:36:24 -0400 |
| commit | 1d554b5af1b43ced740725c1812949af1447b7ea (patch) | |
| tree | 2e52f4200e186bea1f82582bcfc6f650baa26155 /rust/src | |
| parent | 31ec051fd683d3747f10a0981b497d90f08d25a3 (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.rs | 8 |
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>( |
