From fc194354bce7b969bb42907d534d0ccb96d60b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Mert=20Y=C4=B1ld=C4=B1ran?= Date: Tue, 17 May 2022 03:13:50 -0700 Subject: [PATCH] Fix a `nil pointer dereference` error that occurs in `tcpReader`'s `Read` method (#1090) * Fix a `nil pointer dereference` error that occurs in `tcpReader`'s `Read` method * #run_acceptance_tests * #run_acceptance_tests * Revert "Fix a `nil pointer dereference` error that occurs in `tcpReader`'s `Read` method" This reverts commit ccef6cb3931d0de6f3636e753eb82d045144392d. * Fix the race condition using locks #run_acceptance_tests --- tap/tcp_reader.go | 6 +++++- tap/tcp_stream.go | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tap/tcp_reader.go b/tap/tcp_reader.go index e15ae87db..23528ff59 100644 --- a/tap/tcp_reader.go +++ b/tap/tcp_reader.go @@ -82,10 +82,14 @@ func (reader *tcpReader) isProtocolIdentified() bool { } func (reader *tcpReader) rewind() { - // Reset the data and msgBuffer from the master record + // Reset the data reader.data = make([]byte, 0) + + // Reset msgBuffer from the master record + reader.parent.Lock() reader.msgBuffer = make([]api.TcpReaderDataMsg, len(reader.msgBufferMaster)) copy(reader.msgBuffer, reader.msgBufferMaster) + reader.parent.Unlock() // Reset the read progress reader.progress.Reset() diff --git a/tap/tcp_stream.go b/tap/tcp_stream.go index ca99da6c6..31664ac3e 100644 --- a/tap/tcp_stream.go +++ b/tap/tcp_stream.go @@ -72,8 +72,10 @@ func (t *tcpStream) SetProtocol(protocol *api.Protocol) { t.protocol = protocol // Clean the buffers + t.Lock() t.client.msgBufferMaster = make([]api.TcpReaderDataMsg, 0) t.server.msgBufferMaster = make([]api.TcpReaderDataMsg, 0) + t.Unlock() } func (t *tcpStream) GetOrigin() api.Capture {