What changed, and why it matters
This commit fixes a type mismatch bug in Electrum's mobile/QML user interface. A fee rate value was stored as a number (0) but the QML interface expected text ('0'), causing a crash when certain code paths ran. The fix changes the initial value from a number to a string so the interface no longer crashes. There is no indication this could be used to steal funds or attack users remotely.
Treat as a routine bug fix. No security response required. Users of the QML GUI may benefit from the fix to avoid a crash when opening RBF/cancel dialogs under conditions where wallet/network info is unavailable.
Security signals we found
UI crash/error path fixed
Type mismatch between Python int and QML QString
Evidence from the diff
In electrum/gui/qml/qetxfinalizer.py, the QETxRbfFeeBumper and QETxCanceller classes initialize self._oldfee_rate as int 0, but the QML property binding expects a QString. When add_info_from_wallet_and_network() began returning False (a separate behavioral change), get_tx() no longer immediately overwrote _oldfee_rate with a string, exposing the type error. The patch initializes _oldfee_rate as ‘0’ instead, matching QML’s expected type and preventing a TypeError in the QML property system.
Changed components
electrum/gui/qml/qetxfinalizer.pyQML RBF fee bumper UIQML transaction cancellation UIInspect captured patch +2 / −2
diff --git a/electrum/gui/qml/qetxfinalizer.py b/electrum/gui/qml/qetxfinalizer.py
index b320b81..e4114a8 100644
--- a/electrum/gui/qml/qetxfinalizer.py
+++ b/electrum/gui/qml/qetxfinalizer.py
@@ -659,7 +659,7 @@ class QETxRbfFeeBumper(TxFeeSlider, TxMonMixin):
super().__init__(parent)
self._oldfee = QEAmount()
- self._oldfee_rate = 0
+ self._oldfee_rate = '0'
self._orig_tx = None
self._rbf = True
self._bump_method = BumpFeeStrategy.PRESERVE_PAYMENT.name
@@ -800,7 +800,7 @@ class QETxCanceller(TxFeeSlider, TxMonMixin):
super().__init__(parent)
self._oldfee = QEAmount()
- self._oldfee_rate = 0
+ self._oldfee_rate = '0'
self._orig_tx = None
self._txid = ''
self._rbf = True
Why this scored 17/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.