From 26da6daaa96a6d45187e5a2ff519676e9e772cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Mon, 20 Mar 2017 13:35:56 +0200 Subject: accounts/usbwallet: fix Ledger hidapi/libusb protocol violation --- accounts/usbwallet/ledger_wallet.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'accounts/usbwallet/ledger_wallet.go') diff --git a/accounts/usbwallet/ledger_wallet.go b/accounts/usbwallet/ledger_wallet.go index 698e85f48..97434ed3b 100644 --- a/accounts/usbwallet/ledger_wallet.go +++ b/accounts/usbwallet/ledger_wallet.go @@ -83,6 +83,7 @@ var errInvalidVersionReply = errors.New("invalid version reply") // ledgerWallet represents a live USB Ledger hardware wallet. type ledgerWallet struct { + hub *LedgerHub // USB hub the device originates from (TODO(karalabe): remove if hotplug lands on Windows) url *accounts.URL // Textual URL uniquely identifying this wallet info hid.DeviceInfo // Known USB device infos about the wallet @@ -576,6 +577,11 @@ func (w *ledgerWallet) SignTx(account accounts.Account, tx *types.Transaction, c <-w.commsLock defer func() { w.commsLock <- struct{}{} }() + // Ensure the device isn't screwed with while user confirmation is pending + // TODO(karalabe): remove if hotplug lands on Windows + w.hub.commsLock.RLock() + defer w.hub.commsLock.RUnlock() + return w.ledgerSign(path, account.Address, tx, chainID) } -- cgit v1.2.3