From 2b7b8c6ef5de6788619d2a365a03d79d7875d919 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Thu, 12 Dec 2019 12:28:21 +0100 Subject: [PATCH] eth/tracers: handle invalid mem access better --- eth/tracers/tracer.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/eth/tracers/tracer.go b/eth/tracers/tracer.go index 63d38ed32d..a90cdbe5c4 100644 --- a/eth/tracers/tracer.go +++ b/eth/tracers/tracer.go @@ -93,6 +93,13 @@ type memoryWrapper struct { // slice returns the requested range of memory as a byte slice. func (mw *memoryWrapper) slice(begin, end int64) []byte { + if end == begin { + return nil + } + if end < begin || begin < 0 { + log.Warn("Tracer accessed memory incorrectly", "offset", begin, "size", end-begin) + return nil + } if mw.memory.Len() < int(end) { // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go // runtime goes belly up https://github.com/golang/go/issues/15639.