[Pkg-bitcoin-commits] [bitcoin] 63/126: Fix importmulti bug when importing an already imported key

Jonas Smedegaard dr at jones.dk
Mon Nov 13 20:02:09 UTC 2017


This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag debian/0.15.1_dfsg-1
in repository bitcoin.

commit 20cdc2b36c40221a0eec942a1fbdf38ca7c4e005
Author: Pedro Branco <branco at uphold.com>
Date:   Wed Oct 11 11:12:59 2017 +0100

    Fix importmulti bug when importing an already imported key
    
    Github-Pull: #11483
    Rebased-From: a44a215177ab55b4a3b36a7980c313e908e2dd18
---
 src/wallet/rpcdump.cpp         |  2 +-
 test/functional/importmulti.py | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp
index 8e0e4a8..6c8ff7f 100644
--- a/src/wallet/rpcdump.cpp
+++ b/src/wallet/rpcdump.cpp
@@ -960,7 +960,7 @@ UniValue ProcessImport(CWallet * const pwallet, const UniValue& data, const int6
                 pwallet->SetAddressBook(vchAddress, label, "receive");
 
                 if (pwallet->HaveKey(vchAddress)) {
-                    return false;
+                    throw JSONRPCError(RPC_WALLET_ERROR, "The wallet already contains the private key for this address or script");
                 }
 
                 pwallet->mapKeyMetadata[vchAddress].nCreateTime = timestamp;
diff --git a/test/functional/importmulti.py b/test/functional/importmulti.py
index e83e85d..783f06f 100755
--- a/test/functional/importmulti.py
+++ b/test/functional/importmulti.py
@@ -170,6 +170,18 @@ class ImportMultiTest (BitcoinTestFramework):
         assert_equal(address_assert['ismine'], True)
         assert_equal(address_assert['timestamp'], timestamp)
 
+        self.log.info("Should not import an address with private key if is already imported")
+        result = self.nodes[1].importmulti([{
+            "scriptPubKey": {
+                "address": address['address']
+            },
+            "timestamp": "now",
+            "keys": [ self.nodes[0].dumpprivkey(address['address']) ]
+        }])
+        assert_equal(result[0]['success'], False)
+        assert_equal(result[0]['error']['code'], -4)
+        assert_equal(result[0]['error']['message'], 'The wallet already contains the private key for this address or script')
+
         # Address + Private key + watchonly
         self.log.info("Should not import an address with private key and with watchonly")
         address = self.nodes[0].validateaddress(self.nodes[0].getnewaddress())

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-bitcoin/bitcoin.git



More information about the Pkg-bitcoin-commits mailing list