From ecc726d47d5bbd5847ed472fb01ca9e87079c6a9 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 21 Feb 2024 15:33:28 +0100 Subject: syz-manager: truncate repro logs before reporting Until we have figured out a way to solve #4495, let's just truncate repro logs before sending them over the dashboard API. --- pkg/report/report.go | 21 +++++++++++++++++++++ pkg/report/report_test.go | 15 +++++++++++++++ 2 files changed, 36 insertions(+) (limited to 'pkg') diff --git a/pkg/report/report.go b/pkg/report/report.go index 4bf0adead..750ceed14 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -742,6 +742,27 @@ func replace(where []byte, start, end int, what []byte) []byte { return where } +// Truncate leaves up to `begin` bytes at the beginning of log and +// up to `end` bytes at the end of the log. +func Truncate(log []byte, begin, end int) []byte { + if begin+end >= len(log) { + return log + } + var b bytes.Buffer + b.Write(log[:begin]) + if begin > 0 { + b.WriteString("\n\n") + } + fmt.Fprintf(&b, "<>", + len(log)-begin-end, + ) + if end > 0 { + b.WriteString("\n\n") + } + b.Write(log[len(log)-end:]) + return b.Bytes() +} + var ( filenameRe = regexp.MustCompile(`([a-zA-Z0-9_\-\./]*[a-zA-Z0-9_\-]+\.(c|h)):[0-9]+`) reportFrameRe = regexp.MustCompile(`.* in ([a-zA-Z0-9_]+)`) diff --git a/pkg/report/report_test.go b/pkg/report/report_test.go index ba41735a5..934d4552e 100644 --- a/pkg/report/report_test.go +++ b/pkg/report/report_test.go @@ -21,6 +21,7 @@ import ( "github.com/google/syzkaller/pkg/report/crash" "github.com/google/syzkaller/pkg/testutil" "github.com/google/syzkaller/sys/targets" + "github.com/stretchr/testify/assert" ) var flagUpdate = flag.Bool("update", false, "update test files accordingly to current results") @@ -430,3 +431,17 @@ func TestFuzz(t *testing.T) { Fuzz([]byte(data)[:len(data):len(data)]) } } + +func TestTruncate(t *testing.T) { + assert.Equal(t, []byte(`01234 + +<>`), Truncate([]byte(`0123456789ABCDEF`), 5, 0)) + assert.Equal(t, []byte(`<> + +BCDEF`), Truncate([]byte(`0123456789ABCDEF`), 0, 5)) + assert.Equal(t, []byte(`0123 + +<> + +DEF`), Truncate([]byte(`0123456789ABCDEF`), 4, 3)) +} -- cgit mrf-deployment