From 1d554b5af1b43ced740725c1812949af1447b7ea Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Sat, 27 Sep 2025 17:40:15 -0400 Subject: [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 --- rust/src/secrets_provider.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'rust/src') 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; 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( 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( -- cgit v1.3.1