From 15e0093e13dde98fb9ff3251203313ab4f0eacd4 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Fri, 30 May 2014 11:48:23 +0200
Subject: [PATCH] Fixed issue where the client could crash when sending
 malformed data

---
 peer.go | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/peer.go b/peer.go
index 3d140608b..60f2de711 100644
--- a/peer.go
+++ b/peer.go
@@ -450,9 +450,11 @@ func (p *Peer) HandleInbound() {
 					//ethutil.Config.Log.Debugf("[PEER] Could not find a similar block")
 					// If no blocks are found we send back a reply with msg not in chain
 					// and the last hash from get chain
-					lastHash := msg.Data.Get(l - 1)
-					//log.Printf("Sending not in chain with hash %x\n", lastHash.AsRaw())
-					p.QueueMessage(ethwire.NewMessage(ethwire.MsgNotInChainTy, []interface{}{lastHash.Raw()}))
+					if l > 0 {
+						lastHash := msg.Data.Get(l - 1)
+						//log.Printf("Sending not in chain with hash %x\n", lastHash.AsRaw())
+						p.QueueMessage(ethwire.NewMessage(ethwire.MsgNotInChainTy, []interface{}{lastHash.Raw()}))
+					}
 				}
 			case ethwire.MsgNotInChainTy:
 				ethutil.Config.Log.Debugf("Not in chain: %x\n", msg.Data.Get(0).Bytes())
-- 
GitLab