aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-12-19 07:33:05 +0800
committerobscuren <geffobscura@gmail.com>2014-12-19 07:33:05 +0800
commit207b6c50fb6dcc698bac832e98b2d633f79532e4 (patch)
tree8b5e31c3b8c89565b1a6f9f4fce3da991d0f71e3
parent6e24b1587de95b45fe0d7623528bb2f5a48e9823 (diff)
parent7c24cd790d39b67ee16ad7f1b1a805fcb131dc8a (diff)
downloaddexon-207b6c50fb6dcc698bac832e98b2d633f79532e4.tar.gz
dexon-207b6c50fb6dcc698bac832e98b2d633f79532e4.tar.zst
dexon-207b6c50fb6dcc698bac832e98b2d633f79532e4.zip
Merge branch 'badsig' of https://github.com/ebuchman/go-ethereum into ebuchman-badsig
Conflicts: core/transaction_pool.go
-rw-r--r--cmd/mist/gui.go6
-rw-r--r--core/transaction_pool.go8
-rw-r--r--core/types/transaction.go8
-rw-r--r--xeth/js_types.go2
4 files changed, 14 insertions, 10 deletions
diff --git a/cmd/mist/gui.go b/cmd/mist/gui.go
index 3ab307174..e858d7c61 100644
--- a/cmd/mist/gui.go
+++ b/cmd/mist/gui.go
@@ -301,7 +301,7 @@ func (gui *Gui) insertTransaction(window string, tx *types.Transaction) {
addr := gui.address()
var inout string
- if bytes.Compare(tx.Sender(), addr) == 0 {
+ if bytes.Compare(tx.From(), addr) == 0 {
inout = "send"
} else {
inout = "recv"
@@ -321,7 +321,7 @@ func (gui *Gui) insertTransaction(window string, tx *types.Transaction) {
if send.Len() != 0 {
s = strings.Trim(send.Str(), "\x00")
} else {
- s = ethutil.Bytes2Hex(tx.Sender())
+ s = ethutil.Bytes2Hex(tx.From())
}
if rec.Len() != 0 {
r = strings.Trim(rec.Str(), "\x00")
@@ -453,7 +453,7 @@ func (gui *Gui) update() {
tx := ev.Tx
object := state.GetAccount(gui.address())
- if bytes.Compare(tx.Sender(), gui.address()) == 0 {
+ if bytes.Compare(tx.From(), gui.address()) == 0 {
object.SubAmount(tx.Value())
gui.txDb.Put(tx.Hash(), tx.RlpEncode())
diff --git a/core/transaction_pool.go b/core/transaction_pool.go
index 17fcdb86a..1149d4cfb 100644
--- a/core/transaction_pool.go
+++ b/core/transaction_pool.go
@@ -116,7 +116,11 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error {
}
// Get the sender
- sender := pool.chainManager.State().GetAccount(tx.Sender())
+ senderAddr := tx.From()
+ if senderAddr == nil {
+ return fmt.Errorf("invalid sender")
+ }
+ sender := pool.chainManager.State().GetAccount(senderAddr)
totAmount := new(big.Int).Set(tx.Value())
// Make sure there's enough in the sender's account. Having insufficient
@@ -193,7 +197,7 @@ func (pool *TxPool) RemoveInvalid(state *state.StateDB) {
for e := pool.pool.Front(); e != nil; e = e.Next() {
tx := e.Value.(*types.Transaction)
- sender := state.GetAccount(tx.Sender())
+ sender := state.GetAccount(tx.From())
err := pool.ValidateTransaction(tx)
if err != nil || sender.Nonce >= tx.Nonce() {
pool.pool.Remove(e)
diff --git a/core/types/transaction.go b/core/types/transaction.go
index c64fb69f0..95a256a76 100644
--- a/core/types/transaction.go
+++ b/core/types/transaction.go
@@ -77,7 +77,7 @@ func (self *Transaction) SetNonce(nonce uint64) {
}
func (self *Transaction) From() []byte {
- return self.Sender()
+ return self.sender()
}
func (self *Transaction) To() []byte {
@@ -114,12 +114,12 @@ func (tx *Transaction) PublicKey() []byte {
return pubkey
}
-func (tx *Transaction) Sender() []byte {
+func (tx *Transaction) sender() []byte {
pubkey := tx.PublicKey()
// 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
}
@@ -187,7 +187,7 @@ func (tx *Transaction) String() string {
`,
tx.Hash(),
len(tx.recipient) == 0,
- tx.Sender(),
+ tx.From(),
tx.recipient,
tx.nonce,
tx.gasPrice,
diff --git a/xeth/js_types.go b/xeth/js_types.go
index 987edce37..04018f6a5 100644
--- a/xeth/js_types.go
+++ b/xeth/js_types.go
@@ -100,7 +100,7 @@ func NewJSTx(tx *types.Transaction, state *state.StateDB) *JSTransaction {
if receiver == "0000000000000000000000000000000000000000" {
receiver = ethutil.Bytes2Hex(core.AddressFromMessage(tx))
}
- sender := ethutil.Bytes2Hex(tx.Sender())
+ sender := ethutil.Bytes2Hex(tx.From())
createsContract := core.MessageCreatesContract(tx)
var data string