diff options
author | Jeffrey Wilcke <geffobscura@gmail.com> | 2015-08-07 18:12:05 +0800 |
---|---|---|
committer | Jeffrey Wilcke <geffobscura@gmail.com> | 2015-08-07 18:24:44 +0800 |
commit | 132df860d90c163a8be55260bdd219892f9e1bef (patch) | |
tree | 9cb6baee47979b9a0d864b72466d0d15ecd08185 | |
parent | 785b3e7a575f26f3c33e3369d8a75fb131f90584 (diff) | |
download | go-tangerine-132df860d90c163a8be55260bdd219892f9e1bef.tar go-tangerine-132df860d90c163a8be55260bdd219892f9e1bef.tar.gz go-tangerine-132df860d90c163a8be55260bdd219892f9e1bef.tar.bz2 go-tangerine-132df860d90c163a8be55260bdd219892f9e1bef.tar.lz go-tangerine-132df860d90c163a8be55260bdd219892f9e1bef.tar.xz go-tangerine-132df860d90c163a8be55260bdd219892f9e1bef.tar.zst go-tangerine-132df860d90c163a8be55260bdd219892f9e1bef.zip |
miner, rpc: added length check for extra data
-rw-r--r-- | miner/miner.go | 9 | ||||
-rw-r--r-- | rpc/api/miner.go | 8 |
2 files changed, 10 insertions, 7 deletions
diff --git a/miner/miner.go b/miner/miner.go index bf6a48802..3095d9828 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -18,6 +18,7 @@ package miner import ( + "fmt" "math/big" "sync/atomic" @@ -29,6 +30,7 @@ import ( "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger/glog" + "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/pow" ) @@ -143,8 +145,13 @@ func (self *Miner) HashRate() int64 { return self.pow.GetHashrate() } -func (self *Miner) SetExtra(extra []byte) { +func (self *Miner) SetExtra(extra []byte) error { + if uint64(len(extra)) > params.MaximumExtraDataSize.Uint64() { + return fmt.Errorf("Extra exceeds max length. %d > %v", len(extra), params.MaximumExtraDataSize) + } + self.worker.extra = extra + return nil } func (self *Miner) PendingState() *state.StateDB { diff --git a/rpc/api/miner.go b/rpc/api/miner.go index 3c3d1ee0b..5325a660a 100644 --- a/rpc/api/miner.go +++ b/rpc/api/miner.go @@ -17,12 +17,9 @@ package api import ( - "fmt" - "github.com/ethereum/ethash" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/eth" - "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc/codec" "github.com/ethereum/go-ethereum/rpc/shared" ) @@ -126,11 +123,10 @@ func (self *minerApi) SetExtra(req *shared.Request) (interface{}, error) { return nil, err } - if uint64(len(args.Data)) > params.MaximumExtraDataSize.Uint64()*2 { - return false, fmt.Errorf("extra datasize can be no longer than %v bytes", params.MaximumExtraDataSize) + if err := self.ethereum.Miner().SetExtra([]byte(args.Data)); err != nil { + return false, err } - self.ethereum.Miner().SetExtra([]byte(args.Data)) return true, nil } |