demon/win32: do not assume actual_read is valid after a failed process memory read

This commit is contained in:
Ryan Fleury
2025-10-09 16:05:13 -07:00
parent da44e89a92
commit c738768e41
2 changed files with 4 additions and 2 deletions
+1 -1
View File
@@ -6095,7 +6095,7 @@ ctrl_memory_artifact_create(String8 key, B32 *cancel_signal, B32 *retry_out, U64
//- rjf: read successful, OR we have no history -> submit to hash store
U128 hash = {0};
if((zero_terminated_size > 0 || !key_has_history) && range_size != 0 && pre_read_mem_gen == post_read_mem_gen)
if((zero_terminated_size > 0 || !key_has_history) && range_base != 0 && range_size != 0 && pre_read_mem_gen == post_read_mem_gen)
{
hash = c_submit_data(content_key, &range_arena, str8((U8 *)range_base, zero_terminated_size));
gen_out[0] = pre_read_mem_gen;
+3 -1
View File
@@ -322,7 +322,9 @@ dmn_w32_process_read(HANDLE process, Rng1U64 range, void *dst)
{
DWORD error = GetLastError();
log_infof("'Win32 ReadProcessMemory failure': { [0x%I64x, 0x%I64x), code: %i }\n", range.min, range.max, error);
bytes_read += actual_read;
// NOTE(rjf): I have discovered that `actual_read` is *NOT* guaranteed to have
// a usable value if `ReadProcessMemory` fails!
// bytes_read += actual_read;
(void)error;
break;
}