From 1138e6feaf3920e8a8c47be48876474701e2a901 Mon Sep 17 00:00:00 2001 From: Gustavo Cortez Date: Wed, 4 Jun 2014 16:15:03 -0300 Subject: [PATCH 1/2] Handle error when importing a backup --- js/controllers/import.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/js/controllers/import.js b/js/controllers/import.js index f58d261bb..f0959ac20 100644 --- a/js/controllers/import.js +++ b/js/controllers/import.js @@ -6,10 +6,15 @@ angular.module('copayApp.controllers').controller('ImportController', var reader = new FileReader(); var _importBackup = function(encryptedObj) { Passphrase.getBase64Async($scope.password, function(passphrase){ - var w = walletFactory.fromEncryptedObj(encryptedObj, passphrase); + var w, errMsg; + try { + w = walletFactory.fromEncryptedObj(encryptedObj, passphrase); + } catch(e) { + errMsg = e.message; + } if (!w) { $scope.loading = false; - $rootScope.$flashMessage = { message: 'Wrong password', type: 'error'}; + $rootScope.$flashMessage = { message: errMsg || 'Wrong password', type: 'error'}; $rootScope.$digest(); return; } From cd23751ada0b10d6fae69b0be990edfc8c588dc7 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Wed, 4 Jun 2014 16:28:37 -0300 Subject: [PATCH 2/2] fail early with invalid tx proposals --- js/models/core/Wallet.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index 72f25743f..6e7dca714 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -438,7 +438,9 @@ Wallet.prototype.getTxProposals = function() { Wallet.prototype.reject = function(ntxid) { var myId = this.getMyCopayerId(); var txp = this.txProposals.txps[ntxid]; - if (!txp || txp.rejectedBy[myId] || txp.signedBy[myId]) return; + if (!txp || txp.rejectedBy[myId] || txp.signedBy[myId]) { + throw new Error('Invalid transaction to reject: '+ntxid); + } txp.rejectedBy[myId] = Date.now(); this.sendTxProposals(null, ntxid); @@ -454,7 +456,7 @@ Wallet.prototype.sign = function(ntxid, cb) { var txp = self.txProposals.txps[ntxid]; if (!txp || txp.rejectedBy[myId] || txp.signedBy[myId]) { if (cb) cb(false); - return; + throw new Error('Invalid transaction to sign: '+ntxid); } var pkr = self.publicKeyRing;