OSDN Git Service

Add block msg unmarshal error check
authorYahtoo Ma <yahtoo.ma@gmail.com>
Thu, 6 Sep 2018 02:52:25 +0000 (10:52 +0800)
committerYahtoo Ma <yahtoo.ma@gmail.com>
Thu, 6 Sep 2018 02:52:25 +0000 (10:52 +0800)
netsync/handle.go
netsync/message.go

index 1747a0e..eea401b 100644 (file)
@@ -155,7 +155,11 @@ func (sm *SyncManager) Switch() *p2p.Switch {
 }
 
 func (sm *SyncManager) handleBlockMsg(peer *peer, msg *BlockMessage) {
-       sm.blockKeeper.processBlock(peer.ID(), msg.GetBlock())
+       block, err := msg.GetBlock()
+       if err != nil {
+               return
+       }
+       sm.blockKeeper.processBlock(peer.ID(), block)
 }
 
 func (sm *SyncManager) handleBlocksMsg(peer *peer, msg *BlocksMessage) {
index 67fe2ed..c6e03f9 100644 (file)
@@ -105,13 +105,15 @@ func NewBlockMessage(block *types.Block) (*BlockMessage, error) {
 }
 
 //GetBlock get block from msg
-func (m *BlockMessage) GetBlock() *types.Block {
+func (m *BlockMessage) GetBlock() (*types.Block, error) {
        block := &types.Block{
                BlockHeader:  types.BlockHeader{},
                Transactions: []*types.Tx{},
        }
-       block.UnmarshalText(m.RawBlock)
-       return block
+       if err := block.UnmarshalText(m.RawBlock); err != nil {
+               return nil, err
+       }
+       return block, nil
 }
 
 //String convert msg to string