From f15133b840256bbcbfb026bbb61b13c08c6f9ff1 Mon Sep 17 00:00:00 2001 From: g2flyer Date: Mon, 26 Aug 2024 14:02:35 -0700 Subject: [PATCH] fixup! [LibOS] Make handling of corruption more consistent (WIP) --- common/src/protected_files/protected_files.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/common/src/protected_files/protected_files.c b/common/src/protected_files/protected_files.c index 1b674f1b1a..fc1e2b82a1 100644 --- a/common/src/protected_files/protected_files.c +++ b/common/src/protected_files/protected_files.c @@ -643,8 +643,10 @@ static file_node_t* ipf_read_data_node(pf_context_t* pf, uint64_t offset) { if (PF_FAILURE(status)) { free(file_data_node); pf->last_error = status; - if (status == PF_STATUS_MAC_MISMATCH) + if (status == PF_STATUS_MAC_MISMATCH) { pf->file_status = PF_STATUS_CORRUPTED; + pf->last_error = PF_STATUS_CORRUPTED; + } return NULL; } @@ -706,8 +708,10 @@ static file_node_t* ipf_read_mht_node(pf_context_t* pf, uint64_t logical_mht_nod if (PF_FAILURE(status)) { free(file_mht_node); pf->last_error = status; - if (status == PF_STATUS_MAC_MISMATCH) + if (status == PF_STATUS_MAC_MISMATCH) { pf->file_status = PF_STATUS_CORRUPTED; + pf->last_error = PF_STATUS_CORRUPTED; + } return NULL; } @@ -791,9 +795,11 @@ static bool ipf_init_existing_file(pf_context_t* pf, const char* path) { if (PF_FAILURE(status)) { pf->last_error = status; DEBUG_PF("failed to decrypt metadata: %d", status); - if (status == PF_STATUS_MAC_MISMATCH) + if (status == PF_STATUS_MAC_MISMATCH) { // MAC could also mismatch if wrong key was provided but we err on side of safety ... pf->file_status = PF_STATUS_CORRUPTED; + pf->last_error = PF_STATUS_CORRUPTED; + } return false; } @@ -821,8 +827,10 @@ static bool ipf_init_existing_file(pf_context_t* pf, const char* path) { &pf->metadata_decrypted.root_mht_node_mac); if (PF_FAILURE(status)) { pf->last_error = status; - if (status == PF_STATUS_MAC_MISMATCH) + if (status == PF_STATUS_MAC_MISMATCH) { pf->file_status = PF_STATUS_CORRUPTED; + pf->last_error = PF_STATUS_CORRUPTED; + } return false; } }