btc/payment_request: fix error status icon
What changed, and why it matters
This commit fixes a tiny user-interface bug on the BitBox02 hardware wallet. When a Bitcoin or Ethereum payment request was invalid, the device was accidentally showing a success icon (checkmark) instead of an error icon. The change flips one boolean argument so the screen now correctly shows an error icon. It does not change whether the transaction is rejected—the device still refuses to sign.
No security action required beyond normal review and merge. The patch is a straightforward UI fix and does not alter security behavior.
Security signals we found
UI status icon mismatch between message text and icon
Error path previously displayed success indicator
No change to error handling or cryptographic validation logic
Evidence from the diff
In both bitcoin/signtx.rs and ethereum/sign.rs, the hal.ui().status("Invalid\npayment request", true) call is changed to pass false as the second argument. Based on the function’s documented behavior, the boolean controls whether the status screen is shown as success (true) or failure (false). The previous true value therefore rendered a success icon for an invalid payment-request error. The code still returns Error::InvalidInput, so the security decision is unchanged; only the visual feedback is corrected.
Changed components
BitBox02 firmware UI status screenBitcoin transaction signing payment-request verificationEthereum transaction signing payment-request verificationInspect captured patch +2 / −2
diff --git a/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs b/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs
index eb534ca..51a3dc1 100644
--- a/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs
@@ -1023,7 +1023,7 @@ async fn _process(
return Err(Error::Disabled);
}
Err(_) => {
- hal.ui().status("Invalid\npayment request", true).await;
+ hal.ui().status("Invalid\npayment request", false).await;
return Err(Error::InvalidInput);
}
}
diff --git a/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs b/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs
index 17c1b21..3a61009 100644
--- a/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs
@@ -183,7 +183,7 @@ async fn verify_payment_request_recipient(
{
Ok(()) => Ok(()),
Err(_) => {
- hal.ui().status("Invalid\npayment request", true).await;
+ hal.ui().status("Invalid\npayment request", false).await;
Err(Error::InvalidInput)
}
}
Why this scored 20/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.