Merge pull request #2563 from tnull/2023-09-kvstore-followups

`KVStore` upstreaming followups
This commit is contained in:
valentinewallace 2023-09-11 13:59:05 -04:00 committed by GitHub
commit 8de886199b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 7 deletions

View file

@ -26,7 +26,7 @@ macro_rules! call {
}
#[cfg(target_os = "windows")]
fn path_to_windows_str<T: AsRef<OsStr>>(path: T) -> Vec<u16> {
fn path_to_windows_str<T: AsRef<OsStr>>(path: &T) -> Vec<u16> {
path.as_ref().encode_wide().chain(Some(0)).collect()
}
@ -164,8 +164,8 @@ impl KVStore for FilesystemStore {
let res = if dest_file_path.exists() {
call!(unsafe {
windows_sys::Win32::Storage::FileSystem::ReplaceFileW(
path_to_windows_str(dest_file_path.clone()).as_ptr(),
path_to_windows_str(tmp_file_path).as_ptr(),
path_to_windows_str(&dest_file_path).as_ptr(),
path_to_windows_str(&tmp_file_path).as_ptr(),
std::ptr::null(),
windows_sys::Win32::Storage::FileSystem::REPLACEFILE_IGNORE_MERGE_ERRORS,
std::ptr::null_mut() as *const core::ffi::c_void,
@ -175,8 +175,8 @@ impl KVStore for FilesystemStore {
} else {
call!(unsafe {
windows_sys::Win32::Storage::FileSystem::MoveFileExW(
path_to_windows_str(tmp_file_path).as_ptr(),
path_to_windows_str(dest_file_path.clone()).as_ptr(),
path_to_windows_str(&tmp_file_path).as_ptr(),
path_to_windows_str(&dest_file_path).as_ptr(),
windows_sys::Win32::Storage::FileSystem::MOVEFILE_WRITE_THROUGH
| windows_sys::Win32::Storage::FileSystem::MOVEFILE_REPLACE_EXISTING,
)
@ -263,8 +263,8 @@ impl KVStore for FilesystemStore {
call!(unsafe {
windows_sys::Win32::Storage::FileSystem::MoveFileExW(
path_to_windows_str(dest_file_path).as_ptr(),
path_to_windows_str(trash_file_path.clone()).as_ptr(),
path_to_windows_str(&dest_file_path).as_ptr(),
path_to_windows_str(&trash_file_path).as_ptr(),
windows_sys::Win32::Storage::FileSystem::MOVEFILE_WRITE_THROUGH
| windows_sys::Win32::Storage::FileSystem::MOVEFILE_REPLACE_EXISTING,
)

View file

@ -216,6 +216,12 @@ where
for stored_key in kv_store.list(
CHANNEL_MONITOR_PERSISTENCE_NAMESPACE, CHANNEL_MONITOR_PERSISTENCE_SUB_NAMESPACE)?
{
if stored_key.len() < 66 {
return Err(io::Error::new(
io::ErrorKind::InvalidData,
"Stored key has invalid length"));
}
let txid = Txid::from_hex(stored_key.split_at(64).0).map_err(|_| {
io::Error::new(io::ErrorKind::InvalidData, "Invalid tx ID in stored key")
})?;