diff --git a/Makefile b/Makefile index 936ce87..ea46aa4 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ BENCHMARK = BenchmarkRAWInput release: release-x64 release-x64: - docker run -v `pwd`:$(SOURCE_PATH) -t --env GOOS=linux --env GOARCH=amd64 -i gor go build -ldflags "-X main.VERSION=$(VERSION)"&& tar -czf gor_$(VERSION)_x64.tar.gz gor && rm gor + docker run -v `pwd`:$(SOURCE_PATH) -t --env GOOS=linux --env GOARCH=amd64 -i gor go build -ldflags "-X main.VERSION=$(VERSION) -extldflags "-static""&& tar -czf gor_$(VERSION)_x64.tar.gz gor && rm gor release-x86: docker run -v `pwd`:$(SOURCE_PATH) -t --env GOOS=linux --env GOARCH=386 -i gor go build -ldflags "-X main.VERSION=$(VERSION)" && tar -czf gor_$(VERSION)_x86.tar.gz gor && rm gor diff --git a/raw_socket_listener/listener.go b/raw_socket_listener/listener.go index e0b58f6..e3ae853 100644 --- a/raw_socket_listener/listener.go +++ b/raw_socket_listener/listener.go @@ -283,9 +283,20 @@ func (t *Listener) readPcap() { // Skip ethernet layer, 14 bytes data := packet.Data()[14:] ihl := uint8(data[0]) & 0x0F + + // Truncated IP info + if len(data) < int(ihl*4) { + continue + } + srcIP := data[12:16] data = data[ihl*4:] + // Truncated TCP info + if len(data) < 13 { + continue + } + dataOffset := (data[12] & 0xF0) >> 4 // We need only packets with data inside