aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Buchman <ethan@coinculture.info>2014-11-29 08:39:20 +0800
committerEthan Buchman <ethan@coinculture.info>2014-11-29 08:42:05 +0800
commit7c24cd790d39b67ee16ad7f1b1a805fcb131dc8a (patch)
tree9b9e6e49fcd855884b6718350252fe7461ba60d2
parent8cf9ed0ea588e97f2baf0f834248727e8fbca18f (diff)
downloaddexon-7c24cd790d39b67ee16ad7f1b1a805fcb131dc8a.tar.gz
dexon-7c24cd790d39b67ee16ad7f1b1a805fcb131dc8a.tar.zst
dexon-7c24cd790d39b67ee16ad7f1b1a805fcb131dc8a.zip
fix panic on bad sender
-rw-r--r--chain/transaction_pool.go6
-rw-r--r--chain/types/transaction.go2
2 files changed, 6 insertions, 2 deletions
diff --git a/chain/transaction_pool.go b/chain/transaction_pool.go
index 119712ba8..ae96b0251 100644
--- a/chain/transaction_pool.go
+++ b/chain/transaction_pool.go
@@ -116,7 +116,11 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error {
// Get the sender
//sender := pool.Ethereum.BlockManager().procState.GetAccount(tx.Sender())
- sender := pool.Ethereum.BlockManager().CurrentState().GetAccount(tx.Sender())
+ senderAddr := tx.Sender()
+ if senderAddr == nil {
+ return fmt.Errorf("Invalid sender")
+ }
+ sender := pool.Ethereum.BlockManager().CurrentState().GetAccount(senderAddr)
totAmount := new(big.Int).Set(tx.Value)
// Make sure there's enough in the sender's account. Having insufficient
diff --git a/chain/types/transaction.go b/chain/types/transaction.go
index 626a7e5ce..5599512f6 100644
--- a/chain/types/transaction.go
+++ b/chain/types/transaction.go
@@ -116,7 +116,7 @@ func (tx *Transaction) Sender() []byte {
// Validate the returned key.
// Return nil if public key isn't in full format
- if len(pubkey) != 0 && pubkey[0] != 4 {
+ if len(pubkey) == 0 || pubkey[0] != 4 {
return nil
}