From a20c3b22aeb49b96d1d681677b38096678db073b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20R=C3=BChl?= Date: Wed, 20 Jul 2022 12:24:29 +0200 Subject: [PATCH] fix(plc4go/plc4xpcapanalyzer): fixed bug with payload replacement with equal length arrays --- .../internal/cbusanalyzer/analyzer.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go b/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go index a5df621240c..b262c9f36b2 100644 --- a/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go +++ b/plc4go/tools/plc4xpcapanalyzer/internal/cbusanalyzer/analyzer.go @@ -29,6 +29,7 @@ import ( "github.com/pkg/errors" "github.com/rs/zerolog/log" "net" + "reflect" ) type Analyzer struct { @@ -295,11 +296,8 @@ func (a *Analyzer) MapPackets(in chan gopacket.Packet, packetInformationCreator a.mappedPacketChan = make(chan gopacket.Packet) go func() { defer close(a.mappedPacketChan) - currentPackageNum := uint(0) - currentPackageNum++ mappingLoop: for packet := range in { - currentPackageNum++ switch { case packet == nil: log.Debug().Msg("Done reading packages. (nil returned)") @@ -314,9 +312,10 @@ func (a *Analyzer) MapPackets(in chan gopacket.Packet, packetInformationCreator a.mappedPacketChan <- common.NewFilteredPackage(err, packet) } else { currentApplicationLayer := packet.ApplicationLayer() - newApplicationLayer := gopacket.Payload(payload) - if len(currentApplicationLayer.Payload()) != len(newApplicationLayer) { - packet = &manipulatedPackage{Packet: packet, newApplicationLayer: newApplicationLayer} + newPayload := gopacket.Payload(payload) + if !reflect.DeepEqual(currentApplicationLayer.Payload(), newPayload) { + log.Debug().Msgf("Replacing payload %q with %q", currentApplicationLayer.Payload(), payload) + packet = &manipulatedPackage{Packet: packet, newApplicationLayer: newPayload} } a.mappedPacketChan <- packet }