URI: 
       tfix #4122 - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 0f5cabc7f6500a3143f7ad8e71ab9cb84083ee09
   DIR parent 7e6fba0513b6a8db0a0546e8184f7d7a66008585
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Wed, 14 Mar 2018 12:42:42 +0100
       
       fix #4122
       
       Diffstat:
         M electrum                            |       7 +++++--
         M plugins/hw_wallet/cmdline.py        |       3 +++
         M plugins/keepkey/clientbase.py       |       3 +++
         M plugins/keepkey/qt_generic.py       |       2 +-
         M plugins/trezor/clientbase.py        |       3 +++
         M plugins/trezor/qt_generic.py        |       2 +-
       
       6 files changed, 16 insertions(+), 4 deletions(-)
       ---
   DIR diff --git a/electrum b/electrum
       t@@ -93,7 +93,7 @@ from electrum import constants
        from electrum import SimpleConfig, Network
        from electrum.wallet import Wallet, Imported_Wallet
        from electrum.storage import WalletStorage, get_derivation_used_for_hw_device_encryption
       -from electrum.util import print_msg, print_stderr, json_encode, json_decode
       +from electrum.util import print_msg, print_stderr, json_encode, json_decode, UserCancelled
        from electrum.util import set_verbosity, InvalidPassword
        from electrum.commands import get_parser, known_commands, Commands, config_variables
        from electrum import daemon
       t@@ -295,7 +295,10 @@ def get_password_for_hw_device_encrypted_storage(plugins):
            name, device_info = devices[0]
            plugin = plugins.get_plugin(name)
            derivation = get_derivation_used_for_hw_device_encryption()
       -    xpub = plugin.get_xpub(device_info.device.id_, derivation, 'standard', plugin.handler)
       +    try:
       +        xpub = plugin.get_xpub(device_info.device.id_, derivation, 'standard', plugin.handler)
       +    except UserCancelled:
       +        sys.exit(0)
            password = keystore.Xpub.get_pubkey_from_xpub(xpub, ())
            return password
        
   DIR diff --git a/plugins/hw_wallet/cmdline.py b/plugins/hw_wallet/cmdline.py
       t@@ -32,6 +32,9 @@ class CmdLineHandler:
            def show_message(self, msg, on_cancel=None):
                print_msg(msg)
        
       +    def show_error(self, msg):
       +        print_msg(msg)
       +
            def update_status(self, b):
                print_error('trezor status', b)
        
   DIR diff --git a/plugins/keepkey/clientbase.py b/plugins/keepkey/clientbase.py
       t@@ -50,6 +50,9 @@ class GuiMixin(object):
                else:
                    msg = _("Enter your current {} PIN:")
                pin = self.handler.get_pin(msg.format(self.device))
       +        if len(pin) > 9:
       +            self.handler.show_error(_('The PIN cannot be longer than 9 characters.'))
       +            pin = ''  # to cancel below
                if not pin:
                    return self.proto.Cancel()
                return self.proto.PinMatrixAck(pin=pin)
   DIR diff --git a/plugins/keepkey/qt_generic.py b/plugins/keepkey/qt_generic.py
       t@@ -250,7 +250,7 @@ class QtPlugin(QtPluginBase):
                    vbox.addWidget(QLabel(msg))
                    vbox.addWidget(text)
                    pin = QLineEdit()
       -            pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,10}')))
       +            pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,9}')))
                    pin.setMaximumWidth(100)
                    hbox_pin = QHBoxLayout()
                    hbox_pin.addWidget(QLabel(_("Enter your PIN (digits 1-9):")))
   DIR diff --git a/plugins/trezor/clientbase.py b/plugins/trezor/clientbase.py
       t@@ -50,6 +50,9 @@ class GuiMixin(object):
                else:
                    msg = _("Enter your current {} PIN:")
                pin = self.handler.get_pin(msg.format(self.device))
       +        if len(pin) > 9:
       +            self.handler.show_error(_('The PIN cannot be longer than 9 characters.'))
       +            pin = ''  # to cancel below
                if not pin:
                    return self.proto.Cancel()
                return self.proto.PinMatrixAck(pin=pin)
   DIR diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py
       t@@ -251,7 +251,7 @@ class QtPlugin(QtPluginBase):
                    vbox.addWidget(QLabel(msg))
                    vbox.addWidget(text)
                    pin = QLineEdit()
       -            pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,10}')))
       +            pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,9}')))
                    pin.setMaximumWidth(100)
                    hbox_pin = QHBoxLayout()
                    hbox_pin.addWidget(QLabel(_("Enter your PIN (digits 1-9):")))