From 544c3256d69a36bc773e7d681e0bc9c96e83e01f Mon Sep 17 00:00:00 2001 From: Sosthene Date: Sat, 30 Nov 2024 20:01:40 +0100 Subject: [PATCH] [bug] pairing: `roles` needs validation when pairing --- src/api.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/api.rs b/src/api.rs index 7106e89..e31a987 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1617,7 +1617,10 @@ pub fn get_update_proposals(process_outpoint: String) -> ApiResult { None => None }; - let member = lock_local_device()?.to_member(); + let device = lock_local_device()?; + let member = device.to_member(); + + let is_pairing = device.get_pairing_commitment().is_none(); for state in relevant_process.get_latest_concurrent_states()? { if state.encrypted_pcd == Value::Null { @@ -1635,7 +1638,7 @@ pub fn get_update_proposals(process_outpoint: String) -> ApiResult { for (key, value) in &decrypted_pcd { let previous_value = previous_state.get(key).or_else(|| Some(&Value::Null)).unwrap(); if previous_value == value { continue; } - let need_validation = if fields_to_validate.iter().any(|f| *key == **f) { true } else { false }; + let need_validation = if is_pairing && key.as_str() == "roles" { true } else { fields_to_validate.iter().any(|f| *key == **f) }; let notify_user = if need_validation { true } else if !value.is_hex_string() { true } else { false }; let diff = UserDiff { new_state_merkle_root: root.clone(), @@ -1650,7 +1653,7 @@ pub fn get_update_proposals(process_outpoint: String) -> ApiResult { } } else { for (key, value) in &decrypted_pcd { - let need_validation = if fields_to_validate.iter().any(|f| *key == **f) { true } else { false }; + let need_validation = if is_pairing && key.as_str() == "roles" { true } else { fields_to_validate.iter().any(|f| *key == **f) }; let notify_user = if need_validation { true } else if !value.is_hex_string() { true } else { false }; let diff = UserDiff { new_state_merkle_root: root.clone(),